我想匹配几种编写姓氏的方法,但这与firstname不匹配。如何才能做到这一点? 我已经在下面的正则表达式,但我找不到“并且首先'不匹配''任何地方”(所以既不逻辑AND也不逻辑NOT)。
(?:(?:(?:last)*.*name)|(?:name.*last)|(?:(?:achter)*.*naam)|(?:familie.*naam)
但是因为有时“name”也意味着姓氏,所以它是我不想要的名字匹配。
我尝试添加,但失败了,这样的表达式:[^(?:first)]+
,(?!(?:first))
等。
P.S。 我没有使用javascript函数或任何东西的libarty。我必须把这个正则表达式放在我的firefox autofill-addon形式的字段中。所以,我需要在正则表达式中解决这个问题。
答案 0 :(得分:1)
要匹配任何不包含第一个且不为空的内容:
^(?:(?!first).)+$
如果必须包含名称:
^(?:(?!first).)*name(?:(?!first).)*$
你也可以使用两张支票:
(str.search(/name/i) >=0 && str.search(/first/i) == -1)
答案 1 :(得分:0)
我不认为纯正的regexp是可能的,因为正则表达式正是有限状态机可识别的那些。