在一位开发人员将RegExp文字改为构造函数调用后,我们最近遇到了一个错误,我想知道为什么会有任何差别.确切的代码是
var parts = new RegExp("/rt:([^@]+)@(\d+)/").exec(tag);
Run Code Online (Sandbox Code Playgroud)
与原来的
var parts = /rt:([^@]+)@(\d+)/.exec(tag);
Run Code Online (Sandbox Code Playgroud)
时tag是,例如rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077,第一(童车)调用返回null,而第二个返回["rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077", "60C1C036-42FA-4073-B10B-1969BD2358FB", "00000000077"]
毋庸置疑,我恢复了这一变化,但我想知道为什么首先会出现这样的差异.
我试图用这样的构造函数语法创建一个正则表达式new RegExp('\bword\b', 'g'),但它没有按预期运行.相反,它似乎创建一个看起来像这样的正则表达式,/\bwor\b/g缺少最后一个字母.
我必须使用构造函数语法来创建正则表达式,因为我从json文件动态创建,并且您不能将正则表达式放在json中.所以我的问题是:
一个.为什么这些表现不一样?和b.我该怎么做才能纠正这种情况?
注意:我尝试做的是创建一个仅与整个单词匹配的正则表达式,而不是另一个单词中存在的单词.