对于模板引擎,我使用正则表达式来标识字符串中括号内的内容.例如,正则表达式需要匹配{key}或< tag>或[元素].
目前我的正则表达式如下所示:
var rx=/([\[\{<])([\s\S]+?)([\]\}>])]/;
问题是这样的正则表达式不会强制括号匹配.例如,在以下字符串中:
[{lastName},{firstName}]
正则表达式将匹配[{lastName}
有没有办法定义匹配括号?例如,如果开口括号是[那么结束括号必须是],而不是}或者>
解决方法
这样做的最好方法是分成3个正则表达式,特别是如果不同的括号可以有不同的含义,
var rx1 = /\[([^\]]+)]/; var rx2 = /\(([^)]+)\)/; var rx3 = /{([^}]+)}/;
这些将分别匹配由[],()和{}包围的任何文本,以及第一个匹配组中的文本.