为什么这样做
re = new RegExp('\\$\\[(.+)\\]\\(([S,M,L]),([L,C,R])\\)', 'g')
'$[sds](S,L)'.replace(re, function(a,b,c,d) {
console.log(a,b,c,d); return 'test';
})
这不是
re = new RegExp('\\$\\[(\S+)\\]\\(([S,M,L]),([L,C,R])\\)', 'g')
'$[sds](S,L)'.replace(re, function(a,b,c,d) {
console.log(a,b,c,d); return 'test';
})
两者之间的唯一区别是示例1具有.+
,而示例2具有\S+
。
\S+
应与括号之间的sds
匹配,与.+
答案 0 :(得分:1)
您需要转义\S
:
new RegExp('\\$\\[(\\S+)\\]\\(([S,M,L]),([L,C,R])\\)', 'g')
这是一个小提琴:http://jsfiddle.net/rtXLN/
正如评论中所指出的,你的正则表达式有点偏差:
new RegExp('\\$\\[(\\S+)\\]\\(([SML]),([LCR])\\)', 'g')