php中文正則表達式
『壹』 超常用的php正則表達式收集整理
以下就是對超常用的PHP正則表達式進行的收集整理,為了方便大家更快更好的掌握php正則表達式。
一、表單驗證匹配
驗證賬號,字母開頭,允許
5-16
位元組,允許字母數字下劃線:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
驗證賬號,不能為空,不能有空格,只能是英文字母:^\S+[a-z
A-Z]$
驗證賬號,不能有空格,不能非數字:^\d+$
驗證用戶密碼,以字母開頭,長度在
6-18
之間:^[a-zA-Z]\w{5,17}$
驗證是否含有
^%&',;=?$\
等字元:[^%&',;=?$\x22]+
匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配騰訊QQ號:[1-9][0-9]{4,}
匹配日期,只能是
2004-10-22
格式:^\d{4}\-\d{1,2}-\d{1,2}$
匹配國內電話號碼:^\d{3}-\d{8}|\d{4}-\d{7,8}$------------評註:匹配形式如010-12345678
或0571-12345678
或
0831-1234567
匹配中國郵政編碼:^[1-9]\d{5}(?!\d)$
匹配身份證:\d{14}(\d{4}|(\d{3}[xX])|\d{1})------------評註:中國的身份證為15
位或18
位
不能為空且二十位元組以上:^[\s|\S]{20,}$
二、字元匹配
匹配由
26
個英文字母組成的字元串:^[A-Za-z]+$
匹配由
26
個大寫英文字母組成的字元串:^[A-Z]+$
匹配由
26
個小寫英文字母組成的字元串:^[a-z]+$
匹配由數字和
26
個英文字母組成的字元串:^[A-Za-z0-9]+$
匹配由數字、26個英文字母或者下劃線組成的字元串:^\w+$
匹配空行:\n[\s|
]*\r
匹配任何內容:[\s\S]*
匹配中文字元:[\x80-\xff]+
或者
[\xa1-\xff]+
只能輸入漢字:^[\x80-\xff],{0,}$
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]
三、匹配數字
只能輸入數字:^[0-9]*$
只能輸入n位的數字:^\d{n}$
只能輸入至少n位數字:^\d{n,}$
只能輸入m-n位的數字:^\d{m,n}$
匹配正整數:^[1-9]\d*$
匹配負整數:^-[1-9]\d*$
匹配整數:^-?[1-9]\d*$
匹配非負整數(正整數
+
0):^[1-9]\d*|0$
匹配非正整數(負整數
+
0):^-[1-9]\d*|0$
匹配正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
匹配負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
匹配浮點數:^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
匹配非負浮點數(正浮點數
+
0):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
匹配非正浮點數(負浮點數
+
0):^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
四、其他
匹配HTML標記的正則表達式(無法匹配嵌套標簽):<(\S*?)[^>]*>.*?</\1>|<.*?
/>
匹配網址
URL
:[a-zA-z]+://[^\s]*
匹配
IP
地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
提示
上述正則表達式通常都加了
^
與
$
來限定字元的起始和結束,如果需要匹配的內容包括在字元串當中,可能需要考慮去掉
^
和
$
限定符。
以上正則表達式僅供參考,使用時請檢驗後再使用,希望通過這些超常用的PHP正則表達式
『貳』 PHP正則匹配中文字母數字正則表達式
方法一
代碼如下 if(preg_match("/^d*$/" " ")) { echo "全數字 "; }
if(preg_match("/^[a z]*$/i" "fdsFDfd")) { echo "全字母 "; }
if(preg_match("/^[a zd]*$/i" "fd fd ")) { echo "有數字有字母 "; }
中文漢字
代碼如下 $username=$_REQUEST[ username ]; if(!preg_match("/^[a z xa xff]{ }$/" $username)) { echo" r "; exit; }
上面是比較散的 下面把幾個總結到一起來
lishixin/Article/program/PHP/201311/21332
『叄』 php 匹配中英文的正則表達式。。。。謝謝啦~~~
<?php
header('Content-type:text/html;charset=utf-8');
$str = "php編程ddd漢字%#^%字元";
$pa = '/[a-zA-Z\x{4e00}-\x{9fa5}]/u';
preg_match_all($pa,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
運行結果:
Array
(
[0] => Array
(
[0] => p
[1] => h
[2] => p
[3] => 編
[4] => 程
[5] => d
[6] => d
[7] => d
[8] => 漢
[9] => 字
[10] => 字
[11] => 符
)
)
『肆』 PHP常用正則表達式匯總
1.
^d+$"//非負整數(正整數
+
0)
2.
"^[0-9]*[1-9][0-9]*$"//正整數
3.
"^((-d+)|(0+))$"//非正整數(負整數
+
0)
4.
"^-[0-9]*[1-9][0-9]*$"//負整數
5.
"^-?d+$"//整數
6.
"^d+(.d+)?$"//非負浮點數(正浮點數
+
0)
7.
"^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮點數
8.
"^((-d+(.d+)?)|(0+(.0+)?))$"//非正浮點數(負浮點數
+
0)
9.
"^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//負浮點數
10.
"^(-?d+)(.d+)?$"//浮點數
11.
"^[A-Za-z]+$"//由26個英文字母組成的字元串
12.
"^[A-Z]+$"//由26個英文字母的大寫組成的字元串
13.
"^[a-z]+$"//由26個英文字母的小寫組成的字元串
14.
"^[A-Za-z0-9]+$"//由數字和26個英文字母組成的字元串
15.
"^w+$"//由數字、26個英文字母或者下劃線組成的字元串
16.
"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"//email地址
17.
"^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$"//url
18.
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/
//
年-月-日
19.
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/
//
月/日/年
20.
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"
//Emil
21.
/^((+?[0-9]{2,4}-[0-9]{3,4}-)|([0-9]{3,4}-))?([0-9]{7,8})(-[0-9]+)?$/
//電話號碼
22.
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"
//IP地址
23.
匹配中文字元的正則表達式:
[u4e00-u9fa5]
24.
匹配雙位元組字元(包括漢字在內):[^x00-xff]
25.
匹配空行的正則表達式:n[s|
]*r
26.
匹配HTML標記的正則表達式:/<(.*)>.*</1>|<(.*)
/>/
27.
匹配首尾空格的正則表達式:(^s*)|(s*$)
28.
匹配Email地址的正則表達式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
29.
匹配網址URL的正則表達式:^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
30.
匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
31.
匹配國內電話號碼:(d{3}-|d{4}-)?(d{8}|d{7})?
32.
匹配騰訊QQ號:^[1-9]*[1-9][0-9]*$
33.
元字元及其在正則表達式上下文中的行為:
34.
將下一個字元標記為一個特殊字元、或一個原義字元、或一個後向引用、或一個八進制轉義符。
35.
^
匹配輸入字元串的開始位置。如果設置了
RegExp
對象的Multiline
屬性,^
也匹配
』n』
或
』r』
之後的位置。
36.
$
匹配輸入字元串的結束位置。如果設置了
RegExp
對象的Multiline
屬性,$
也匹配
』n』
或
』r』
之前的位置。
37.
*
匹配前面的子表達式零次或多次。
38.
+
匹配前面的子表達式一次或多次。+
等價於
{1,}。
39.
?
匹配前面的子表達式零次或一次。?
等價於
{0,1}。
40.
{n,}
n
是一個非負整數,至少匹配n
次。
41.
{n,m}
m
和
n
均為非負整數,其中n
<=
m。最少匹配
n
次且最多匹配
m
次。在逗號和兩個數之間不能有空格。
『伍』 PHP的正則表達式中使用中文(並匹配中文)的問題,原串為UTF8
<?php
$str = "中國勢力是(煙消雲散、再轉在、匣介)中國、類別置頂帖(來哦見好就收)、炒肉可示、需要城";
$preg2 = "/中國/sim" ;
preg_match_all($preg2, $str, $strResult, PREG_PATTERN_ORDER);
print_r($strResult);
?>
我的PHP文件是UTF-8編碼,不知道你的$str是從哪裡得到的呢?像上面一樣,我直接給$str賦值,這樣使用 /中國/sim 這個表達式沒有任何問題,會不會是你$str字元串的編碼與頁面編碼不一致呢?
『陸』 PHP 正則表達式 【以漢字「王」開頭,後面匹配1~2個漢字】的正則表達式怎麼寫求高手指教
$pa = '/[\x4e00-\x9fa5]/U';
var_mp(preg_match($pa,'漢字'));
/*********************************************/
$pa = '/\x29579[\x4e00-\x9fa5]{2}/U';
『柒』 php正則表達式匹配一段中文,中間有換行,空白,應該怎麼寫
有多種處理方法:
1、使用[sS]匹配任意字元,而不是使用「.」
2、使用s單行修飾模式,例:$pattern='#abc.*?def#s';//能匹配abc換行def
3、使用s*匹配換行和空格,php里s能匹配空白字元,含換行
php里的中文使用[x7f-xff]表示,因此,使用正則:
$pattern='#[x7f-xff]+(?:s*[x7f-xff]+)*#';即可
『捌』 網址中帶有中文字元的php正則表達式
在中文字元出現的地方用[^`]+表示,你也可以用其它字元代替「`」,只要中文字元內處不可能出現的字元就行。
意思是:不是「`」字元,除了「`」的一切字元,包括中文,重復一次或多次。
為什麼要這樣表示中文字元的集合呢?
可能是因為在正則表達式中沒有表示中文字元的字元類或集合或范圍。甚至[[:print:]]+都不行!
測試如下:
<?php
$str='ffdjsfjshgfhfg<12><模式>d<括弧內的部分>f符類中fs<字元類中可tryrt用的元字元為>:sjssdfsfs,sfsfjksjk,<iogfds12346789>括弧內的部分';
$b='[<][^<]+[>]';//有可能出現中文字元的地方用[^<]+表示
//$b='[<][[:print:]]+[>]';
while(eregi($b,$str,$array))
{
$str_h=str_replace("<","<",$array[0]);
$str_h=str_replace(">",">",$str_h);
echo $str_h."</br>";
$str=str_replace($array[0],'',$str);
}//From J.L
?>