在一位开发人员将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"]毋庸置疑,我恢复了这一变化,但我想知道为什么首先会出现这样的差异。
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
对于小正则表达式,文字肯定是要走的路。如果你有一个动态表达式或一个很长的正则表达式来维护,RegExp是一个不错的选择。转义并不算太糟糕:只需“加倍[字面]反斜杠并转义引号”Javascript - The Good Parts,p。71.这里的代码只能得到引号:function escape(text) { return text.replace(/['"]/g, "\\$&"); };
添加回答
举报
0/150
提交
取消