php 正則 不包含某字符串的正則表達(dá)式
常見函數(shù) strstr($str, “abc”);
正則匹配 preg_match(”/(abc)?/is”, $str);
但是要匹配一個(gè)字符串中,不包含某字符串,用正則就比較麻煩了
如果不用正則 !strstr($str, “abc”); 就可以解決問題了
但是用正則呢,就只有這樣了,”/^((?!abc).)*$/is”
//------------------------------------------------
<?php
$str = "dfadfadf765577abc55fd";
$pattern_url = "/^((?!abc).)*$/is";
if (preg_match($pattern_url, $str)){
echo "不含有abc!";
}else{
echo "含有abc!";
}
?>
//------------------------------------------------
結(jié)果為:false,含有abc!
$str = “2b3c4d5c”;
注意:[^(abc)] 這個(gè)語法是逐個(gè)檢查$str中的字符是否不在 a b c中,
preg_match(”/[^(abc)]/s”, $str, $arr);
其中字符 2 就不在 a b c 中,所以$arr返回值為2;
同時(shí)匹配,包含字符串 “abc”,而且不包含字符串 “xyz”
“/(abc)[^((?!xyz).)*$]/s”
以下是補(bǔ)充:
判斷一個(gè)字符串中是否含有另一字符串,有很多方法,如下:
1. 常見函數(shù)
strstr($str, "abc");
2. 正則匹配
preg_match("/(abc)/is", $str);
但是要匹配一個(gè)字符串中,不包含某字符串,用正則就比較麻煩了。
1. 如果不用正則如下就可以解決問題
!strstr($str, "abc");
2. 但是用正則呢,就只有這樣了
preg_match("/^((?!abc).)*$/is", $str);
完整代碼示例
$str = "dfadfadf765577abc55fd";
$pattern_url = "/^((?!abc).)*$/is";
if (preg_match($pattern_url, $str))
{
echo "不含有abc!";
}
else
{
echo "含有abc!";
}
結(jié)果為:false,含有abc!
同時(shí)匹配,包含字符串 "abc",而且不包含字符串 "xyz"的正則表達(dá)式:
preg_match("/(abc)[^((?!xyz).)*$]/is", $str);
該方法有效,本人使用方法如下:
(?:(?!<\/div>).|\n)*? //匹配不含</div>的一個(gè)字符串
但最終使用中結(jié)果是發(fā)現(xiàn),該方法效率極其低下,在處理非常短文字(要匹配該正則式的相同部分的有十幾個(gè)字,或者最多幾十個(gè))時(shí)間可以考慮使用,但當(dāng)用于大篇幅文章解析或多處需要改種匹配時(shí)間應(yīng)不使用,考慮用其他方法替代(如:先解析出要匹配該段正則式的文字,然后驗(yàn)證其中是否存在某段文字),正則表達(dá)式對于匹配不含特定字符串的文字段時(shí)并不是非常有效的方法.
相關(guān)文章
36個(gè)正則表達(dá)式(開發(fā)效率提高80%)
我們在日常的Java開發(fā)中,經(jīng)常需要處理一些字符串,本文主要介紹了36個(gè)常用正則表達(dá)式,感興趣的可以了解一下2021-11-11限制文本框中只能輸入實(shí)數(shù)或整數(shù),其它字符無效,有勞大家了!
限制文本框中只能輸入實(shí)數(shù)或整數(shù),其它字符無效,有勞大家了!...2006-10-10python正則表達(dá)式的使用(實(shí)驗(yàn)代碼)
正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。這篇文章主要介紹了python正則表達(dá)式的使用(實(shí)驗(yàn)代碼),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-06-06Javascript Validation for email(正則表達(dá)式) 英文翻譯
javascript中通過正則表達(dá)式驗(yàn)證email地址是否符合規(guī)則,需要的朋友可以參考下。2011-10-10