0

我对 javascript 编码风格有一些问题。由于 Google Closure Linter,行不应超过 80 个字符,但我有一些大约 120 个字符长的正则表达式。当我在正则表达式中间换行时,它不能正常工作。如何处理?

var pattern = /veeery, veeeery looooooooooooooooooong regular expressssssssssssssssssssssssssion/;
4

2 回答 2

4

一个解决方案是这样做:

var pattern = new RegExp(
   'veeery, veeeery looooooooooooooooooong'
   +' regular expressssssssssssssssssssssssssion'
);

如果您的模式声明在循环中,这对于正则表达式文字来说很好,我建议将此声明移动到循环之前,以避免重复创建实例和编译它的成本。

注意转义序列,您必须替换\\\:以下两个正则表达式是相同的

/\d/g
new RegExp("\\d", 'g')
于 2013-03-18T14:59:02.133 回答
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 \\*");
于 2013-03-18T15:00:03.613 回答