Javascript regexp文字和构造函数之间的差异

在一位开发人员将RegExp文字改为构造函数调用后,我们最近遇到了一个错误,我想知道为什么会有任何差别。确切的代码是


var parts = new RegExp("/rt:([^@]+)@(\d+)/").exec(tag);

与原来的


var parts = /rt:([^@]+)@(\d+)/.exec(tag);

时tag是,例如rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077,第一(童车)调用返回null,而第二个返回["rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077", "60C1C036-42FA-4073-B10B-1969BD2358FB", "00000000077"]


毋庸置疑,我恢复了这一变化,但我想知道为什么首先会出现这样的差异。


慕村225694
浏览 539回答 3
3回答

桃花长相依

对于小正则表达式,文字肯定是要走的路。如果你有一个动态表达式或一个很长的正则表达式来维护,RegExp是一个不错的选择。转义并不算太糟糕:只需“加倍[字面]反斜杠并转义引号”Javascript - The Good Parts,p。71.这里的代码只能得到引号:function escape(text) { return text.replace(/['"]/g, "\\$&"); };
打开App,查看更多内容
随时随地看视频慕课网APP