This question already has answers here:
Regex: match everything but specific pattern
(7个答案)
2年前关闭。
是否可以在仍然返回true的情况下对不应该匹配的内容执行
例如,目前我们有...
我们要检查Mozilla字符串是否不在$ agent中,但
所以我们不能将其更改为...
谢谢
编辑:
如果要确保
(7个答案)
2年前关闭。
是否可以在仍然返回true的情况下对不应该匹配的内容执行
preg_match
?例如,目前我们有...
if (preg_match('#^Mozilla(.*)#', $agent)) {
我们要检查Mozilla字符串是否不在$ agent中,但
preg_match
是否仍返回true。所以我们不能将其更改为...
if (!preg_match('#^Mozilla(.*)#', $agent)) {
谢谢
最佳答案
您需要的是negative lookahead,语法为:
if (preg_match('#^(?!Mozilla).#', $agent)) {
实际上,您可能只需要使用#^(?!Mozilla)#
就可以了。我不知道PHP对零宽度 token (但为I've tested it in JavaScript and it works fine)仅是一个模式的感觉如何。编辑:
如果要确保
Mozilla
在字符串中的任何位置都没有出现,则可以使用此...if (preg_match('#^((?!Mozilla).)*$#', $agent)) {
...但前提是您不能使用此功能!if (strpos($agent, 'Mozilla') !== false) {
关于php - 如果不是,则进行预匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6254239/
10-16 13:29