- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
19小时前关门了。
Improve this question
我专门在表达式中查找NOT b
之类的内容...我知道/[ac-z]/
之类的内容可以工作,但我查找/[a-z&[^b]]
之类的内容,它表示匹配a-z
,但不匹配b
...有人建议使用/[a-z&&[^b]]/
,但引擎将&
之后的[
作为字符,而不是括号表达式。
2条答案
按热度按时间xwbd5t1u1#
您 * 可以 * 在模式开始时使用负向前看。例如:
它匹配除
b
之外的任何小写字母。(?!.*b)
是一个否定的前瞻,它Assertb
在字符串的任何地方都找不到。因此,尽管[a-z]+
确实包括b
,但如果模式发展到这一步,b
已经被排除了。vulvrdjw2#
有几种方法可以测试
a
到z
,而不测试b
。1.字符类中的间隙
用作字符类中的间隙:
^[ac-z]+$
。注意,该模式使用^
和$
在字符串的开头和结尾锚字符串,这样可以避免像%xyz123
这样的误报。2.负前瞻
如Tim Biegleisen所述,使用消极前瞻:
^(?!.*b)[a-z]+$
。请注意,并非所有浏览器都支持lookahead/lookbehind,尤其是Safari。3.逻辑或
使用逻辑为
or
的非捕获组:^(?:a|[c-z])+$
4.多个正则表达式
有时候,使用多个正则表达式进行逻辑组合会有帮助,比如
A || B && !C
,这主要在更复杂的情况下有用。***了解有关regex的详细信息:***https://twiki.org/cgi-bin/view/Codev/TWikiPresentation2018x10x14Regex