从js文件和chrome控制台运行时,regexp产生不同的匹配

时间:2015-01-05 09:31:22

标签: javascript regex google-chrome

这很奇怪,我在js代码中有这个陈述:

alert ( "Hello @name , your account will be activated at  @date".match(/@{1}[\w_]+/g) );

当我从文件运行代码时(使用浏览器打开文件) 我得到了

[hello,name,your,account,be,activated,date]

但是当我在 chrome开发者控制台 上运行它时 我明白了:

[@name,@date]

这里发生了什么?相同的代码d / t结果

更新

正如@ funkwurm 试图提及评论时,当我使用chrome开发工具检查页面时代码发生了变化。
match(/@{1}[\w_]+/g)已更改为match(/\[\w_]+/g)

我正在使用 Grails 框架,因此我认为使用 slashy语法(/ /)会导致问题,因为Grails也使用该语法(由于冲突)。< / p>

将其改为

var pattern = new RegExp("@{1}[\\w_]+","g");    


alert ( "Hello @name , your account will be activated at @date".match(pattern) );

但仍然无效,当我alert(pattern)时,我{@ 1}}仍然没有@。

感谢

1 个答案:

答案 0 :(得分:1)

正如我在更新 上提到的那样,问题是在使用Chrome开发人员工具进行检查时,@字符丢失了(谢谢 @Lee Kowalkowski 为了洞察力)。

我尝试 转发 但仍无法正常工作。

以下是我提出的解决方案:

var pattern = new RegExp(String.fromCharCode(64)+"{1}[\\w_]+","g"); //64 is ascii value of @

仍然急于想知道@字符丢失的原因