繁体   English   中英

具有双重负匹配的正则表达式

[英]Regex with double negative matches

给定一系列字符串:

  • error.user
  • 成功
  • success.user
  • success.admin

我想写一个正则表达式,它将匹配任何不以error开头的东西,并且它也没有.user 所以对于这个列表, successsuccess.admin

到目前为止我得到的是:/ /^((?!error)\\w*)((?!\\.*user)\\w*)/

第一部分: ((?!error)\\w*)工作正常,并将匹配缩小到只是以success开始的字符串。 由于某种原因,第二部分: ((?!\\.*user)\\w*)正在做什么都没有。 我认为第一部分匹配太多了。

我在PHP / PCRE中这样做
这是我的regex101.com链接: https ://regex101.com/r/l2sZru/1

你需要像这样修复你的负面正则表达式:

^(?!error|.*\.user)[\w.]+$

RegEx演示

这里(?!error|.*\\.user) .user (?!error|.*\\.user)如果error在开始时或者如果在输入中的任何地方找到.user`将断言失败。

正则表达式中的(?!\\.*user)表示当输入具有0个或更多DOT时断言失败,仅在开始时跟随user

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM