3

この単純な正規表現をより簡潔に書く方法はありますか?(ここでは、通常は使用しませんが、読みやすさを向上させるために別々の行を使用しています)

(
(regex (matches|corresponds to) string)
|
(string (matches|corresponds to) regex)
)

ここで「文字列」と「正規表現」を入れ替えて、簡潔に表現したいと思います。何度も書くこと(一致する|対応する)を避けたい。

4

1 に答える 1

1

私が考えることができる唯一のことは、リテラルを使用する代わりに動的に作成することです:

function or(){return "("+Array.prototype.join.call(arguments,"|")+")";}
var bidi = ["matches", or("regex", "string"), "corresponds to"];
return new RegExp(or(bidi.join(" "), bidi.reverse().join(" ")));
于 2012-07-13T08:37:48.813 に答える