我正在尝试制作一个正则表达式,它应接受字母,数字,下划线但不应接受不敏感的输入www
。
这意味着输入可以是wwwblabla
或blablawww
或包含www
的任何字词,但它只能是www
。是否有可能制作这样的正则表达式?
我有数字,字母,undeserscore的表达式,但我不知道如何连接www
条件:/(^[a-zA-Z0-9_+]$/
答案 0 :(得分:4)
要量化一个字符类,你将量词放在它之外,如果你想捕捉一些东西,你应该关闭左括号。
使用否定预测,您可以从匹配项中排除www
:
^(?!www$)\w+$
\w
=> [a-zA-Z0-9_]
答案 1 :(得分:0)
我认为没有办法在一个正则表达式中实现这一点。我建议您使用白名单和黑名单概念。
正如其他人所提到的,\w
相当于[A-Za-z0-9_]
。您可能还希望匹配单词边界(\b
)而不是行的开头和结尾。
白名单/黑名单可以是单个字符串或正则表达式,具体取决于您的要求。
伪代码:
if regex(string, pattern = whitelist) and string != blacklist
请注意,如果正则表达式不匹配,它将short circuit,因此它不会检查黑名单是否匹配。如果您希望黑名单比白名单更频繁地匹配,那么您需要交换这两个列表。
编辑:如果您每行匹配一个单词,则负向前瞻功能正常。看起来你在表达中做了什么,所以忽略这一点。