我对这个小的JavaScript代码有些麻烦:
var text="Z Test Yeah ! Z";
// With literal syntax, it returns true: good!
alert(/(Z[\s\S]*?Z)/g.test(text));
// But not with the RegExp object O_o
var reg=new RegExp('Z[\s\S]*?Z','g');
alert(reg.test(text));
我不明白为什么文字语法和RegExp对象不会给我相同的结果...... 问题是我必须使用RegExp对象,因为我稍后会有一些变量。
有什么想法吗?
提前致谢:)
答案 0 :(得分:20)
你需要在字符串文字中加倍转义\
个字符,这就是通常首选正则表达式文字的原因。
尝试:
'Z[\\s\\S]*?Z'
答案 1 :(得分:3)
我认为这是因为你必须逃避反斜杠,即使使用单引号也是如此。试试这个:
new RegExp('Z[\\s\\S]*?Z','g')