具有双重否定匹配的正则表达式
Regex with double negative matches
给定一系列字符串:
- error.user
- 成功
- success.user
- success.admin
我想编写一个正则表达式来匹配任何不以 error
开头的内容,并且其中也没有 .user
。所以对于这个列表,success
和 success.admin
到目前为止我得到的是:/^((?!error)\w*)((?!\.*user)\w*)/
第一部分:((?!error)\w*)
工作正常,并将匹配范围缩小到仅以 success
开头的字符串。出于某种原因,第二部分:((?!\.*user)\w*)
完全没有做任何事情。我觉得第一部分太匹配了。
我正在 PHP/PCRE
这是我的 regex101.com link:https://regex101.com/r/l2sZru/1
您需要像这样修复负正则表达式:
^(?!error|.*\.user)[\w.]+$
这里 (?!error|.*\.user)
如果 error
在开头或者如果在输入的任何地方找到 .user` 将断言失败。
正则表达式中的 (?!\.*user)
表示当输入有 0 个或多个点时仅在开始时后跟 user
时断言失败。
给定一系列字符串:
- error.user
- 成功
- success.user
- success.admin
我想编写一个正则表达式来匹配任何不以 error
开头的内容,并且其中也没有 .user
。所以对于这个列表,success
和 success.admin
到目前为止我得到的是:/^((?!error)\w*)((?!\.*user)\w*)/
第一部分:((?!error)\w*)
工作正常,并将匹配范围缩小到仅以 success
开头的字符串。出于某种原因,第二部分:((?!\.*user)\w*)
完全没有做任何事情。我觉得第一部分太匹配了。
我正在 PHP/PCRE
这是我的 regex101.com link:https://regex101.com/r/l2sZru/1
您需要像这样修复负正则表达式:
^(?!error|.*\.user)[\w.]+$
这里 (?!error|.*\.user)
如果 error
在开头或者如果在输入的任何地方找到 .user` 将断言失败。
(?!\.*user)
表示当输入有 0 个或多个点时仅在开始时后跟 user
时断言失败。