php – 如果没有预匹配

前端之家收集整理的这篇文章主要介绍了php – 如果没有预匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Regex: match everything but7个
是否有可能在仍然返回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会如何看待一个只有零宽度令牌的模式,但是I’ve tested it in JavaScript and it works fine.

编辑:

如果你想确保Mozilla没有出现在字符串中的任何地方,你可以使用这个……

if (preg_match('#^((?!Mozilla).)*$#',$agent)) {

……但只有你不能用它!

if (strpos($agent,'Mozilla') !== false) {

猜你在找的PHP相关文章