正则表达式在从 JS 文件和 Chrome 控制台运行时会产生不同的匹配项

regexp resulting different matches when run from js file and chrome console

本文关键字:运行时 JS 文件 控制台 Chrome 正则表达式      更新时间:2023-09-26

这很奇怪,我在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框架,所以我认为使用斜杠语法(//)导致了问题,因为Grails也使用该语法(由于冲突)。

所以把它改成了

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

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

但仍然没有效果,当我这样做时alert(pattern)我仍然/'['w_]+/g没有@。

谢谢

正如我试图在更新中提到的,问题是在使用 chrome 开发人员工具检查它时缺少 @ 字符(感谢@Lee Kowalkowski 的见解)。

我试图逃离它,但仍然不起作用。

这是我提出的解决方案:

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

仍然渴望知道为什么@字符丢失