JavaScript和正则表达式:文字语法Vs. RegExp对象

时间:2011-08-10 17:02:09

标签: javascript regex

我对这个小的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对象,因为我稍后会有一些变量。

有什么想法吗?

提前致谢:)

2 个答案:

答案 0 :(得分:20)

你需要在字符串文字中加倍转义\个字符,这就是通常首选正则表达式文字的原因。

尝试:

'Z[\\s\\S]*?Z'

答案 1 :(得分:3)

我认为这是因为你必须逃避反斜杠,即使使用单引号也是如此。试试这个:

new RegExp('Z[\\s\\S]*?Z','g')