参见英文答案 >
Regex: match everything but7个
是否有可能在仍然返回true的情况下对不应匹配的东西进行preg_match?
是否有可能在仍然返回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) {