[英]Regex with double negative matches
给定一系列字符串:
我想写一个正则表达式,它将匹配任何不以error
开头的东西,并且它也没有.user
。 所以对于这个列表, success
和success.admin
到目前为止我得到的是:/ /^((?!error)\\w*)((?!\\.*user)\\w*)/
第一部分: ((?!error)\\w*)
工作正常,并将匹配缩小到只是以success
开始的字符串。 由于某种原因,第二部分: ((?!\\.*user)\\w*)
正在做什么都没有。 我认为第一部分匹配太多了。
我在PHP / PCRE中这样做
这是我的regex101.com链接: https ://regex101.com/r/l2sZru/1
你需要像这样修复你的负面正则表达式:
^(?!error|.*\.user)[\w.]+$
这里(?!error|.*\\.user)
.user (?!error|.*\\.user)
如果error
在开始时或者如果在输入中的任何地方找到.user`将断言失败。
正则表达式中的(?!\\.*user)
表示当输入具有0个或更多DOT时断言失败,仅在开始时跟随user
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.