2012-01-28 84 views
3

有没有一些方法可以更简洁地编写这个简单的正则表达式? (我在这里使用不同的线路,以提高可读性,即使我通常不会使用它们)简洁地表达复杂的正则表达式

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

“串”和“正则表达式”是在这里切换,我要简洁地表达这一点。我想避免多次写入(匹配|对应)。

+0

这取决于味道 - 如果有的话。不与POSIX,也许与PCRE,但我不确定。很难想象一种能够为您节省工作量的元语言,但却仅限于常规语言。 – artistoex 2012-01-28 08:18:50

+0

我正在使用Javascript的正则表达式引擎。 – 2012-01-28 16:23:11

回答

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(" ")));