简洁地表达复杂的正则表达式

时间:2012-01-28 05:24:46

标签: javascript regex

有没有办法更简洁地编写这个简单的正则表达式? (这里我使用单独的行来提高可读性,即使我通常不会使用它们)

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

“string”和“regex”在这里切换,我想简明扼要地表达一下。我想避免多次写作(匹配|对应)。

1 个答案:

答案 0 :(得分: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(" ")));