我有一些看起来像这样的主题:
hu
ha
ho
hi
我的模式看起来像这样#^(h.+)$#
这将我所有的字符串都返回为true
. 这是意料之中的。现在我只想选择不包含o
.
如何向我的正则表达式添加否定条件?
我有一些看起来像这样的主题:
hu
ha
ho
hi
我的模式看起来像这样#^(h.+)$#
这将我所有的字符串都返回为true
. 这是意料之中的。现在我只想选择不包含o
.
如何向我的正则表达式添加否定条件?
替换.
为[^o]
,它匹配除 之外的所有字符o
。
#^(h[^o]+)$#
表示一个字符类,[]
前导^
反转它。
您可以使用否定字符类添加否定条件
所以[^abcd]
会匹配除a
, b
, c
,之外的任何字符d
在您的情况下,它应该是[^o]
..这将匹配任何字符,除了o
为确保字符串不包含o
字符,请使用负前瞻
^(?!.*o)
因此,如果您想检查字符串是否以开头h
并且没有o
字符,请使用
^(?!.*o)h
其他选项是
^h[^o]+$
您必须使用行尾$
来确保 h 之后的所有字符都不是o
.
有什么理由需要正则表达式来进行简单的字符检测?
if (stripos($your_string, 'h') !== false) {
... there's an H in the string ...
}
会更有效率。