[英]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.