我遇到了一些对 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);
在这里检查 fiddle http://jsfiddle.net/6PSdg/4/
由于某种原因,两个相同的(至少看起来像)正则表达式模式返回不同的结果。谁能解释一下发生了什么事吗? ))
谢谢!
最佳答案
不同之处在于,当您使用 RegExp
构造函数时,您将传入一个字符串,并且字符串文字中的反斜杠将被解释为字符串 em> 转义。因此,要实际将反斜杠传递给正则表达式引擎,您必须确保字符串中的反斜杠被转义(通过在其前面放置反斜杠):
var exp = new RegExp (prefix+"\\d*","gm");
// Here ----------------------^
关于javascript - 请解释 RegExp javascript 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431759/