要求:两个表达式,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