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'
);

パターン宣言がループ内にある場合 (正規表現リテラルでは問題ありません)、この宣言をループの前に移動して、インスタンスの作成とコンパイルのコストを繰り返さないようにすることをお勧めします。

エスケープ シーケンスに注意してください。\\\の 2 つの正規表現は同一です。

/\d/g
new RegExp("\\d", 'g')
于 2013-03-18T14:59:02.133 に答える
0

それはリンターにとってばかげたルールだと思いますが、解決策は文字列式から正規表現を作成することです。

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 に答える