我对 javascript 编码风格有一些问题。由于 Google Closure Linter,行不应超过 80 个字符,但我有一些大约 120 个字符长的正则表达式。当我在正则表达式中间换行时,它不能正常工作。如何处理?
var pattern = /veeery, veeeery looooooooooooooooooong regular expressssssssssssssssssssssssssion/;
我对 javascript 编码风格有一些问题。由于 Google Closure Linter,行不应超过 80 个字符,但我有一些大约 120 个字符长的正则表达式。当我在正则表达式中间换行时,它不能正常工作。如何处理?
var pattern = /veeery, veeeery looooooooooooooooooong regular expressssssssssssssssssssssssssion/;
一个解决方案是这样做:
var pattern = new RegExp(
'veeery, veeeery looooooooooooooooooong'
+' regular expressssssssssssssssssssssssssion'
);
如果您的模式声明在循环中,这对于正则表达式文字来说很好,我建议将此声明移动到循环之前,以避免重复创建实例和编译它的成本。
注意转义序列,您必须替换\
为\\
:以下两个正则表达式是相同的
/\d/g
new RegExp("\\d", 'g')
虽然我认为这对于 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 \\*");