这很奇怪,我在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}}仍然没有@。
感谢
答案 0 :(得分:1)
正如我在更新 上提到的那样,问题是在使用Chrome开发人员工具进行检查时,@字符丢失了(谢谢 @Lee Kowalkowski 为了洞察力)。
我尝试 转发 但仍无法正常工作。
以下是我提出的解决方案:
var pattern = new RegExp(String.fromCharCode(64)+"{1}[\\w_]+","g"); //64 is ascii value of @
仍然急于想知道@字符丢失的原因