如果发现了几个选项,则正则表达式匹配,但实际上没有其他选项

时间:2017-04-03 17:05:37

标签: regex

如果" foo"和" bar" (或其任何组合)如果存在但是没有?是

例如:

" foo bar ipsum dolor sit amet,consectetur adipiscing elit" - 没有比赛

" ipsum dolor sit amet,consectetur adipiscing elit foo " - 没有比赛

" foo ipsum dolor sit amet, bar consectetur adipiscing elit foo " - 没有比赛

"富" - 比赛

"杆" - 比赛

" barfoo" - 比赛

" foobarbarfoofoobar" - 比赛

我试图克服负面的前瞻,但我还没有能够解决这个问题。

3 个答案:

答案 0 :(得分:1)

如果您需要foobar的任意组合,那么这样就足够了:

^(foo|bar)+$

Live preview

它会捕获foobarfoobarbarfoofoo甚至foobarbarfoofoobar等。

修改

由于您还希望匹配foo bar,因此您必须包含\h。请注意,\h匹配空格和制表符,而\s也匹配新行。

^((?:foo|bar)\h*)+$

Live preview

答案 1 :(得分:1)

如果您还需要匹配空格字符,您可以使用

之类的内容
^(foo|bar)+(foo|bar|\s)*$

这是一个天真的解决方案,因为显示捕获组已经显示为答案。

答案 2 :(得分:1)

您可以使用此正则表达式:

^\h*(?:(?:foo|bar)\h*)+$

RegEx Demo