摘要: 用正则实现包含某个字符串很容易,但如果实现不包含某个字符串呢?作者给出了一个解决方案。
判断一个字符串中是否含有另一字符串,
php有很多方法,如下:
1. 常见函数
2. 正则匹配
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了。
1. 如果不用正则如下就可以解决问题
2. 但是用正则呢,就只有这样了
结果为:false,含有abc!
1. 常见函数
- strstr($str, "abc");
strstr($str, "abc");
2. 正则匹配
- preg_match("/(abc)/is", $str);
preg_match("/(abc)/is", $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了。
1. 如果不用正则如下就可以解决问题
- !strstr($str, "abc");
!strstr($str, "abc");
2. 但是用正则呢,就只有这样了
- preg_match("/^((?!abc).)*$/is", $str);
preg_match("/^((?!abc).)*$/is", $str);
完整代码示例
- $str = "dfadfadf765577abc55fd";
- $pattern_url = "/^((?!abc).)*$/is";
- if (preg_match($pattern_url, $str))
- {
- echo "不含有abc!";
- }
- else
- {
- echo "含有abc!";
- }
$str = "dfadfadf765577abc55fd"; $pattern_url = "/^((?!abc).)*$/is"; if (preg_match($pattern_url, $str)) { echo "不含有abc!"; } else { echo "含有abc!"; }
结果为:false,含有abc!
同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz”的正则表达式:
- preg_match("/(abc)[^((?!xyz).)*$]/is", $str);