當前位置:首頁 » 編程語言 » php正則測試

php正則測試

發布時間: 2025-01-01 02:54:21

php 正則表達式如何判斷一個字元串是否為合法的四則數學算式

代碼如下(經測通過):

<?php
$str="((1+1)*3.3)/10-12+(1+1)";
if(preg_match("/[+-*/.]{2}|[^+-*/()d.]+/i",$str,$matches)){
echo'非法算式';
}else{
if(substr_count($str,"(")==substr_count($str,")")){
echo'合法算式';
}else{
echo'括弧不匹配';
}
}
?>


判斷str里是否存在連續運算符、小數點或運算符、括弧、數字以外的字元

若存在則非法

若不存在則判斷str里( 和 )數量是否一致

② php 正則校驗是否是域名

1.檢測域名格式正確性的函數

//檢測域名格式
functionCheckUrl($C_url){
$str="/^http(s?)://(?:[A-za-z0-9-]+.)+[A-za-z]{2,4}(?:[/?#][/=?%-&~`@[]':+!.#w]*)?$/";
if(!preg_match($str,$C_url)){
returnfalse;
}else{
returntrue;
}
}

2.使用方法

$url="http://www..com/";//填寫你要檢測的域名
if(!CheckUrl($url)){
echo"域名格式不正確";
}else{
echo"域名格式正確";
}

③ UTF-8正則表達式如何匹配漢字,utf-8正則表達式_PHP教程

判斷輸入內容是否含有違法字元,請看下面代碼

$str = "編程";

if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

echo "您輸入的[".$str."]含有違法字元";

}

else

{

echo "您輸入的[".$str."]完全合法,通過!";

}

-----------------------

UTF-8匹配:在javascript中,要判斷字元串是中文是很簡單的。

比如:

代碼如下:

var str = "php編程";

if (/^[\u4e00-\u9fa5]+$/.test(str))

{

alert("該字元串全部是中文");

}

else

{

alert("該字元串不全部是中文");

}

php中,是用\x表示十六進制數據的。

於是,變換成如下的代碼:

代碼如下:

$str = "php編程";

if (preg_match("/^[\x4e00-\x9fa5]+$/",$str))

{

print("該字元串全部是中文");

}

else

{

print("該字元串不全部是中文");

}

貌似不報錯了,判斷的結果也正確,不過把$str換成「編程」兩字,結果卻還是顯示「該字元串不全部是中文」,看來這樣的判斷還是不夠准確。

重要:

查閱了《精通正則表達式》發現,對於[\x4e00-\x9fa5]這塊東西,自己做一個強化的解釋php的正則中, [\x4e00-\x9fa5],其實就是 字元和字元組的概念, \x{hex},表達一個16進制數, 需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必須加上大括弧,同時,如果是大於x{FF}的hex,必須和u 修飾符連用,不然會非法出錯

網上只能找到匹配全形字元的正則: ^[\x80-\xff]*^/ ,這里可以不加大括弧 [\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持 不過,既然\x表示的十六進制數據,為什麼和js里邊提供的范圍\x4e00-\x9fa5不一樣呢?

於是我就換成了下邊的代碼,發現真的准確了:

代碼如下:

$str = "php編程";

if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

print("該字元串全部是中文");

}

else

{

print("該字元串不全部是中文");

}

知道了php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式——/^[\x{4e00}-\x{9fa5}]+$/u, 參考以上文章寫了如下一段測試代碼(復制以下代碼保存成.php文件)

<?php

$action = trim($_GET['action']);

if($action == "sub")

{

$str = $_POST['dir'];

if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str))

{

echo "您輸入的[".$str."]含有違法字元";

}

else

{

echo "您輸入的[".$str."]完全合法,通過!";

}

}

GBK:

代碼如下:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312漢字字母數字下劃線正則表達式

以上內容就是PHP中UTF-8正則表達式如何匹配漢字的全部內容,希望大家喜歡。

④ 需要一個PHP正則表達式來驗證密碼,不知道限制大小寫怎麼寫了,求教一下.

$str='你要輸入的密碼';

$model='/[A-Z]+[a-z]+.*/'; //最少要包含一個或者多個大寫或者小寫,和0個或則多個任意字元;
$modelength='/.{8,}/'; //輸入的最少為8位

if(!preg_match($modelength,'aaa')){
echo '密碼不能少於8位';
}
if(!preg_match($model,$str)){
echo '密碼必須包含大小寫';
}

也可以這樣寫
$str="Aaaa!";
$model='/[A-Z]+[a-z]+.*/'; //最少要包含一個或者多個大寫或者小寫,和0個或則多個任意字元;
$modelength='/.{8,}/'; //輸入的最少為8位

if(!preg_match($model,$str)||strlen($str)<8){
echo '密碼需要包含大小寫,或者密碼長度小於8位';
}

⑤ 如何運用PHP函數preg_match_all測試正則表達式效果

php自學網2< /div< div id="biuuu_3"php自學網3< /div'; PHP函數preg_match_all實例要求:分別將每一個DIV元素的ID和內容取出,如biuuu,biuuu_2,biuuu_3,php自學網,php自學網2和php自學網3(一些常用的抓站方法就是這樣匹配的) 分析:字元串是一個簡單的HTML元素,每一個DIV元素對應該一個ID和內容,並且是獨立的,首先考慮如何取出一個DIV內的ID值和內容, 如:php自學網,然後匹配其它類似的元素。一個DIV中需要取出兩個值,也就是兩個匹配的表達式,第一個表達式用於匹配ID值(biuuu),第二個表 達式用於匹配ID的內容(php自學網),正則表達式常用的表達式使用小括弧,那麼前面的元素將會變成如下形式: < div id="(biuuu)"(php自學網)< /div< div id="(表達式1)"(表達式2)< /div 表達式1:[a-zA-Z0-9_]+ (表示匹配大小寫字母,數字和下劃線) 表達式2:[^<]+ (表示不匹配<和字元) 這樣,PHP函數preg_match_all需要匹配的子表達式就實現了,但是還要需要匹配一個的表達式,方法如下: 表達式:/ '"(表達式1)"'(表達式2)/ 注意其中的雙引號"和/需要使用轉義字元轉義,然後把前面兩個表達式放進去,如下:

⑥ 求簡單的php 正則表達式(提取第一個冒號之前的字元串)

$temp="abcd:efghi:jklm";
$r=preg_replace('/([^:]+):.*/','$1',$temp);
echo$r;

熱點內容
台灣虛擬伺服器管理軟體雲伺服器 發布:2025-01-04 04:21:29 瀏覽:966
win10用什麼編譯器 發布:2025-01-04 04:15:32 瀏覽:739
紅包如何設置手機鎖屏密碼 發布:2025-01-04 04:09:32 瀏覽:289
編譯程序的幾個階段和作用 發布:2025-01-04 04:07:12 瀏覽:158
如何查看伺服器的連接情況 發布:2025-01-04 04:07:12 瀏覽:358
配置1060顯卡玩吃雞卡怎麼弄 發布:2025-01-04 04:05:45 瀏覽:810
php與購物車 發布:2025-01-04 04:05:41 瀏覽:827
sql判斷是否存在列 發布:2025-01-04 03:57:00 瀏覽:86
stb演算法 發布:2025-01-04 03:51:48 瀏覽:40
android開啟線程 發布:2025-01-04 03:51:46 瀏覽:491