我需要设计一个能够匹配 以下名称的正则表达式:
Dany and Andy
Steve
Dany and Steve and Andy
Andy and Steve
但未能匹配以下名称:
and
and Dany
Steve and Nancy and
换句话说,我需要一个可以匹配的正则表达式:
到目前为止我所拥有的:https://regex101.com/r/qQ2fY2/1 - 它很难看,我不喜欢它。我也不喜欢我必须两次输入“Kuba”的事实(我只想把它放一次)。
我怎样才能做到这一点? (我尝试过前瞻等等,但我想我做不到:/)。
答案 0 :(得分:1)
基本上你想要匹配的是
^\w+(?: and \w+)*$
\w+
后跟" and "
和另一个字(任意次)但这意味着另一个条件:这个词不能是"and"
。在匹配单词之前,您确实需要一个负面的预测,以确保它不是"and"
。
^(?!and\b)\w+(?: and (?!and\b)\w+)*$
\b
(word boundary)来避免匹配" andy"等名称。