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