javascript - 请解释 RegExp javascript 行为

标签 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);

在这里检查 fiddle http://jsfiddle.net/6PSdg/4/

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

谢谢!

最佳答案

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

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

Updated Fiddle

关于javascript - 请解释 RegExp javascript 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431759/

相关文章:

javascript - Vuejs 将现有匿名对象分配给 data 属性中的属性

javascript - 给文档对象添加自定义方法在IE8中是 'undefined'

javascript - Prestashop Smarty 电子邮件正则表达式验证

c# - 如何向文本文件添加新的唯一字符串

c++ - 在 C++ 中分隔字符串

javascript - 如何将流体宽度视频与 Parallax 网站合并?

javascript - 使用php和ajax、js从数据库中删除

c# - 正则表达式匹配除给定列表之外的所有单词

MYSQL Like 不正确的结果

python - 从 Python 中的给定字符串中删除奇数\n、\t、\r 和空格组合