Javascript RegEx非白色字符失败

时间:2014-01-22 14:43:46

标签: javascript regex

为什么这样做

示例1

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'; 
})

这不是

示例2

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匹配,与.+

相同

1 个答案:

答案 0 :(得分:1)

您需要转义\S

中的反斜杠
new RegExp('\\$\\[(\\S+)\\]\\(([S,M,L]),([L,C,R])\\)', 'g')

这是一个小提琴:http://jsfiddle.net/rtXLN/

正如评论中所指出的,你的正则表达式有点偏差:

new RegExp('\\$\\[(\\S+)\\]\\(([SML]),([LCR])\\)', 'g')