请解释RegExp javascript行为

时间:2013-03-15 11:53:16

标签: javascript regex string

我遇到了javascript RegExp行为的一些理解问题。请帮助我了解这些东西是如何工作的。

var str = "_prefix_123 blah blah _prefix_321 blah blah blah _prefix_100500";
var prefix = "_prefix_";
var exp = new RegExp (prefix+"\d*","gm");

str1 = str.replace(exp,"hello");
alert(str1);

str2 = str.replace(/_prefix_\d*/gm, "hello");
alert(str2);

在这里查看小提琴http://jsfiddle.net/6PSdg/4/

出于某种原因,两个相同的(至少看起来像)正则表达式模式会返回不同的结果。谁能解释一下发生了什么? ))

感谢名单!

1 个答案:

答案 0 :(得分:2)

不同之处在于,当您使用RegExp构造函数时,您传入字符串,字符串文字中的反斜杠被解释为 string 转义。因此,要实际将反斜杠传递给正则表达式引擎,您必须确保字符串中的反斜杠被转义(通过在其前面加一个反斜杠):

var exp = new RegExp (prefix+"\\d*","gm");
// Here ----------------------^

Updated Fiddle