我的javascript编码风格有些问题。由于Google Closure Linter,行不应超过80个字符,但我有一些大约120个字符长的正则表达式。当我在正则表达式中间断行时,它无法正常工作。如何处理?
var pattern = /veeery, veeeery looooooooooooooooooong regular expressssssssssssssssssssssssssion/;
答案 0 :(得分:4)
解决方案是:
var pattern = new RegExp(
'veeery, veeeery looooooooooooooooooong'
+' regular expressssssssssssssssssssssssssion'
);
如果你的模式声明是循环的,这对于正则表达式文字是好的,我建议在循环之前移动这个声明,以避免重复创建实例和编译它的成本。
请注意转义序列,您必须将\
替换为\\
:以下两个正则表达式相同
/\d/g
new RegExp("\\d", 'g')
答案 1 :(得分:0)
虽然我认为对于linter来说这是一个荒谬的规则,但解决方案是从字符串表达式创建正则表达式。
var regex = new RegExp(
"first part of long regex" +
"second part of long regex" +
"and so on"
);
您必须在正则表达式中双重转义转义的元字符。也就是说,如果你的原生风格的正则表达式是:
var regex = /swing on a \*/;
然后你的字符串需要是:
var regex = new RegExp("swing on a \\*");