要求:兩個表達式,exp1
和exp2
,我們需要匹配兩者中的一個或多個。所以,我想出了,正則表達式組合
(exp1 | exp2)*
然而,在一些地方,我看到了下面的被使用,
(exp1 * (exp2 exp1*)*)
兩者有什麼區別?你什麼時候使用一個?
希望一個fiddle將使這一更清晰,
var regex1 = /^"([\x00-!#-[\]-\x7f]|\\")*"$/;
var regex2 = /^"([\x00-!#-[\]-\x7f]*(\\"[\x00-!#-[\]-\x7f]*)*)"$/;
var str = '"foo \\"bar\\" baz"';
var r1 = regex1.exec(str);
var r2 = regex2.exec(str);
編輯:它看起來像有是,當我們拍攝組兩個apporaches之間的行爲差異。第二種方法捕獲整個字符串,而第一種方法僅捕獲最後一個匹配組。查看更新的fiddle。
這是第一個解釋 - https://regex101.com/r/oQ3pM7/1 ...繼承人第二個解釋 - https://regex101.com/r/qZ9wP0/1 –
要清楚,那裏這些正則表達式中沒有空格是正確的嗎? –
@SpencerWieczorek是的,這只是爲了清晰 – anoopelias