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

3

有没有更简洁的方式来编写这个简单的正则表达式?(这里我使用了分开的行来提高可读性,尽管我通常不会使用它们)

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

这里的“string”和“regex”位置颠倒了,我希望简洁地表达这个意思。我想避免重复使用(matches|corresponds to)。

这取决于具体的情况,如果有的话。在POSIX中不行,也许在PCRE中可以,但我不确定。很难想象一种既能节省工作量,又限制于正则语言的元语言。 - wnrph
我正在使用JavaScript的正则表达式引擎。 - Anderson Green
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(" ")));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接