给出一系列字符串:
我想写一个正则表达式,它匹配任何不以error
开头的内容,并且其中也没有.user
。因此,对于此列表,success
和success.admin
到目前为止我得到的是:/^((?!error)\w*)((?!\.*user)\w*)/
第一部分:((?!error)\w*)
工作正常,并将匹配范围缩小到仅以success
开头的字符串。由于某种原因,第二部分:((?!\.*user)\w*)
正在做什么。我认为第一部分匹配太多了。
我在PHP / PCRE中这样做 这是我的regex101.com链接:https://regex101.com/r/l2sZru/1
答案 0 :(得分:2)
你需要修复你的负面正则表达式:
^(?!error|.*\.user)[\w.]+$
如果(?!error|.*\.user)
在开头,或者如果在输入中的任何地方找到.user`,则error
将断言失败。
(?!\.*user)
表示当输入有0个或更多DOT,然后在开始时只有user
时断言失败。