2012-01-28 81 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(" ")));