常用正則表達式php
A. php正則表達式的問題
很有必要!!
跟我學正則表達式!
想必很多人都對正則表達式都頭疼.今天,我以我的認識,加上網上一些文章,希望用常人都可以理解的表達方式.來和大家分享學習經驗.
開篇,還是得說說 ^ 和 $ 他們是分別用來匹配字元串的開始和結束,以下分別舉例說明
"^The": 開頭一定要有"The"字元串;
"of despair$": 結尾一定要有"of despair" 的字元串;
那麼,
"^abc$": 就是要求以abc開頭和以abc結尾的字元串,實際上是只有abc匹配
"notice": 匹配包含notice的字元串
你可以看見如果你沒有用我們提到的兩個字元(最後一個例子),就是說 模式(正則表達式) 可以出現在被檢驗字元串的任何地方,你沒有把他鎖定到兩邊
接著,說說 '*', '+',和 '?',
他們用來表示一個字元可以出現的次數或者順序. 他們分別表示:
"zero or more"相當於{0,},
"one or more"相當於{1,},
"zero or one."相當於{0,1}, 這里是一些例子:
"ab*": 和ab{0,}同義,匹配以a開頭,後面可以接0個或者N個b組成的字元串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同義,同上條一樣,但最少要有一個b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同義,可以沒有或者只有一個b;
"a?b+$": 匹配以一個或者0個a再加上一個以上的b結尾的字元串.
要點, '*', '+',和 '?'只管它前面那個字元.
你也可以在大括弧裡面限制字元出現的個數,比如
"ab{2}": 要求a後面一定要跟兩個b(一個也不能少)("abb");
"ab{2,}": 要求a後面一定要有兩個或者兩個以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a後面可以有2-5個b("abbb", "abbbb", or "abbbbb").
現在我們把一定幾個字元放到小括弧里,比如:
"a(bc)*": 匹配 a 後面跟0個或者一個"bc";
"a(bc){1,5}": 一個到5個 "bc."
還有一個字元 '│', 相當於OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字元串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字元串;
"(a│b)*c": 匹配含有這樣多個(包括0個)a或b,後面跟一個c
的字元串;
一個點('.')可以代表所有的單一字元,不包括"n"
如果,要匹配包括"n"在內的所有單個字元,怎麼辦?
對了,用'[n.]'這種模式.
"a.[0-9]": 一個a加一個字元再加一個0到9的數字
"^.{3}$": 三個任意字元結尾 .
中括弧括住的內容只匹配一個單一的字元
"^[a-zA-Z0-9]"@"[a-zA-Z0-9]"."[a-zA-Z]$"
"[ab]": 匹配單個的 a 或者 b ( 和 "a│b" 一樣);
"[a-d]": 匹配'a' 到'd'的單個字元 (和"a│b│c│d" 還有 "[abcd]"效果一樣); 一般我們都用[a-zA-Z]來指定字元為一個大小寫英文
"^[a-zA-Z]": 匹配以大小寫字母開頭的字元串
"[0-9]%": 匹配含有 形如 x% 的字元串
",[a-zA-Z0-9]$": 匹配以逗號再加一個數字或字母結尾的字元串
你也可以把你不想要得字元列在中括弧里,你只需要在總括弧裡面使用'^' 作為開頭 "%[^a-zA-Z]%" 匹配含有兩個百分號裡面有一個非字母的字元串.
要點:^用在中括弧開頭的時候,就表示排除括弧里的字元
為了PHP能夠解釋,你必須在這些字元面前後加'',並且將一些字元轉義.
不要忘記在中括弧裡面的字元是這條規路的例外—在中括弧裡面, 所有的特殊字元,包括(''), 都將失去他們的特殊性質 "[*+?{}.]"匹配含有這些字元的字元串.
還有,正如regx的手冊告訴我們: "如果列表裡含有 ']', 最好把它作為列表裡的第一個字元(可能跟在'^'後面). 如果含有'-', 最好把它放在最前面或者最後面, or 或者一個范圍的第二個結束點[a-d-0-9]中間的『-』將有效.
看了上面的例子,你對{n,m}應該理解了吧.要注意的是,n和m都不能為負整數,而且n總是小於m. 這樣,才能 最少匹配n次且最多匹配m次. 如"p{1,5}"將匹配 "pvpppppp"中的前五個p
下面說說以開頭的
b 書上說他是用來匹配一個單詞邊界,就是...比如'veb',可以匹配love里的ve而不匹配very里有ve
B 正好和上面的b相反.例子我就不舉了
好,我們來做個應用:
如何構建一個模式來匹配 貨幣數量 的輸入
構建一個匹配模式去檢查輸入的信息是否為一個表示money的數字。我們認為一個表示money的數量有四種方式: "10000.00" 和 "10,000.00",或者沒有小數部分, "10000" and "10,000". 現在讓我們開始構建這個匹配模式:
^[1-9][0-9]*$
這是所變數必須以非0的數字開頭.但這也意味著 單一的 "0" 也不能通過測試. 以下是解決的方法:
^(0│[1-9][0-9]*)$
"只有0和不以0開頭的數字與之匹配",我們也可以允許一個負號在數字之前:
^(0│-?[1-9][0-9]*)$
這就是: "0 或者 一個以0開頭 且可能 有一個負號在前面的數字." 好了,現在讓我們別那麼嚴謹,允許以0開頭.現在讓我們放棄 負號 , 因為我們在表示錢幣的時候並不需要用到. 我們現在指定 模式 用來匹配小數部分:
^[0-9]+(.[0-9]+)?$
這暗示匹配的字元串必須最少以一個阿拉伯數字開頭. 但是注意,在上面模式中 "10." 是不匹配的, 只有 "10" 和 "10.2" 才可以. (你知道為什麼嗎)
^[0-9]+(.[0-9]{2})?$
我們上面指定小數點後面必須有兩位小數.如果你認為這樣太苛刻,你可以改成:
^[0-9]+(.[0-9]{1,2})?$
這將允許小數點後面有一到兩個字元. 現在我們加上用來增加可讀性的逗號(每隔三位), 我們可以這樣表示:
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
不要忘記 '+' 可以被 '*' 替代 如果你想允許空白字元串被輸入話 (為什麼?). 也不要忘記反斜桿 』』 在php字元串中可能會出現錯誤 (很普遍的錯誤).
現在,我們已經可以確認字元串了, 我們現在把所有逗號都去掉 str_replace(",", "", $money) 然後在把類型看成 double然後我們就可以通過他做數學計算了.
再來一個:
構造檢查email的正則表達式
在一個完整的email地址中有三個部分:
1. 用戶名 (在 '@' 左邊的一切),
2.'@',
3. 伺服器名(就是剩下那部分).
用戶名可以含有大小寫字母阿拉伯數字,句號 ('.'), 減號('-'), and 下劃線 ('_'). 伺服器名字也是符合這個規則,當然下劃線除外.
現在, 用戶名的開始和結束都不能是句點. 伺服器也是這樣. 還有你不能有兩個連續的句點他們之間至少存在一個字元,好現在我們來看一下怎麼為用戶名寫一個匹配模式:
^[_a-zA-Z0-9-]+$
現在還不能允許句號的存在. 我們把它加上:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$
上面的意思就是說: "以至少一個規範字元(除了.)開頭,後面跟著0個或者多個以點開始的字元串."
簡單化一點, 我們可以用 eregi()取代 ereg().eregi()對大小寫不敏感, 我們就不需要指定兩個范圍 "a-z" 和 "A-Z" – 只需要指定一個就可以了:
^[_a-z0-9-]+(.[_a-z0-9-]+)*$
後面的伺服器名字也是一樣,但要去掉下劃線:
^[a-z0-9-]+(.[a-z0-9-]+)*$
好. 現在只需要用」@」把兩部分連接:
^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$
這就是完整的email認證匹配模式了,只需要調用
eregi(『^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$ 』,$email)
就可以得到是否為email了
正則表達式的其他用法
提取字元串
ereg() and eregi() 有一個特性是允許用戶通過正則表達式去提取字元串的一部分(具體用法你可以閱讀手冊). 比如說,我們想從 path/URL 提取文件名 – 下面的代碼就是你需要:
ereg("([^/]*)$", $pathOrUrl, $regs);
echo $regs[1];
高級的代換
ereg_replace() 和 eregi_replace()也是非常有用的: 假如我們想把所有的間隔負號都替換成逗號:
ereg_replace("[ nrt]+", ",", trim($str));
最後,我把另一串檢查EMAIL的正則表達式讓看文章的你來分析一下.
"^[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+.'.'[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+$"
如果能方便的讀懂,那這篇文章的目的就達到了.
這篇文章我是在網上找到的...關於正則表達式我也只看過這篇文章...覺得還行看完以後簡單的正則表達式還是能看懂的。
B. php 身份證的正則表達式怎麼寫
$IdCard = "/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i";
提示 :正則格式: 『/正則表達式/模式修正符』;
所以 添加 i 是忽略英文字母大小寫的
C. 史上最全的PHP正則表達式
一、校驗數字的表達式
1 數字:
^[0-9]*$
2 n位的數字:
^\d{n}$
3 至少n位的數字:
^\d{n,}$
4 m-n位的數字:
^\d{m,n}$
5 零和非零開頭的數字:
^(0|[1-9][0-9]*)$
6 非零開頭的最多帶兩位小數的數字:
^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 帶1-2位小數的正數或負數:
^(\-)?\d+(\.\d{1,2})?$
8 正數、負數、和小數:
^(\-|\+)?\d+(\.\d+)?$
9 有兩位小數的正實數:
^[0-9]+(.[0-9]{2})?$
10 有1~3位小數的正實數:
^[0-9]+(.[0-9]{1,3})?$
11 非零的正整數:
^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的負整數:
^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非負整數:
^\d+$ 或 ^[1-9]\d*|0$
14 非正整數:
^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非負浮點數:
^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮點數:
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮點數:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 負浮點數:
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮點數:
^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
二、校驗字元的表達式
1 漢字:
^[\u4e00-\u9fa5]{0,}$
2 英文和數字:
^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 長度為3-20的所有字元:
^.{3,20}$
4 由26個英文字母組成的字元串:
^[A-Za-z]+$
5 由26個大寫英文字母組成的字元串:
^[A-Z]+$
6 由26個小寫英文字母組成的字元串:
^[a-z]+$
7 由數字和26個英文字母組成的字元串:
^[A-Za-z0-9]+$
8 由數字、26個英文字母或者下劃線組成的字元串:
^\w+$ 或 ^\w{3,20}$
9 中文、英文、數字包括下劃線:
^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、數字但不包括下劃線等符號:
^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以輸入含有^%&',;=?$\"等字元:
[^%&',;=?$\x22]+
12 禁止輸入含有~的字元:
[^~\x22]+
三、特殊需求表達式
1、 Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2 、域名:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
3 、InternetURL:
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
4 、手機號碼:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
5 、電話號碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6 國內電話號碼(0511-4405222、021-87888822):
\d{3}-\d{8}|\d{4}-\d{7}
7 、身份證號:
15或18位身份證:
^\d{15}|\d{18}$
15位身份證:
^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
18位身份證:
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$
8、 短身份證號碼(數字、字母x結尾):
^([0-9]){7,18}(x|X)?$
或
^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 、帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 、密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):
^[a-zA-Z]\w{5,17}$
11 、強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
12、 日期格式:
^\d{4}-\d{1,2}-\d{1,2}
13、 一年的12個月(01~09和1~12):
^(0?[1-9]|1[0-2])$
14 、一個月的31天(01~09和1~31):
^((0?[1-9])|((1|2)[0-9])|30|31)$
15 、錢的輸入格式:
16 、1.有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":
^[1-9][0-9]*$
17、 2.這表示任意一個不以0開頭的數字,但是,這也意味著一個字元"0"不通過,所以我們採用下面的形式:
^(0|[1-9][0-9]*)$
18 、3.一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:
^(0|-?[1-9][0-9]*)$
19 、4.這表示一個0或者一個可能為負的開頭不為0的數字.讓用戶以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分:
^[0-9]+(.[0-9]+)?$
20 、5.必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:
^[0-9]+(.[0-9]{2})?$
21、 6.這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣:
^[0-9]+(.[0-9]{1,2})?$
22、 7.這樣就允許用戶只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 、8.1到3個數字,後面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 、備註:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字元串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函數時去掉去掉那個反斜杠,一般的錯誤都在這里
25 、xml文件:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 、中文字元的正則表達式:
[\u4e00-\u9fa5]
27 、雙位元組字元:
[^\x00-\xff]
(包括漢字在內,可以用來計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1))
28 、空白行的正則表達式:\n\s*\r (可以用來刪除空白行)
29 、HTML標記的正則表達式:
<(\S*?)[^>]*>.*?|<.*? /> (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於復雜的嵌套標記依舊無能為力)
30 、首尾空白字元的正則表達式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表達式)
31 、騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
32 、中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數字)
33、 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址時有用)
D. php 正則表達式 url匹配
1,preg_grep(pattern,array);它的返回值是一個新數組,新數組的元素是成功匹配的元素。
E. thinkphp驗證器正則常用規則
ThinkPHP的自動驗證常用的正則
一般我們見的比較多的是設置規則為require、email之類的,其實這些本身也是屬於正則表達式驗證方式,只是系統內置定義了一些常用的正則表達式而已。這些內置的正則表達式的定義可以參考model類的regex方法,內置支持的正則定義包括:
require 欄位必須、email 郵箱、url URL地址、currency 貨幣、number 數字、zip 郵編、integer 整數、double 浮點數、english 英文字母,但是並不局限於這些正則規則的,我們完全可以直接在驗證規則裡面使用正則表達式進行定義,這樣我們可以憑借強大的正則表達式來進行表單欄位驗 證,例如:
附上一些表單驗證中比較常用的正則表達式寫法:
匹配特定字元串:
限定符
限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種。
正則表達式的限定符有:
ThinkPHP的自動驗證機制是為了進行表單數據驗證,驗證可以支持function、 callback、confirm、equal、unique和regex,這里要講的是使用正則表達式進行驗證。
特殊字元
許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元"轉義",即,將反斜杠字元 放在它們前面。下表列出了正則表達式中的特殊字元:
正則表達式(regular expression)描述了一種字元串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
例如:
構造正則表達式的方法和創建數學表達式的方法一樣。也就是用多種元字元與運算符可以將小的表達式結合在一起來創建更大的表達式。正則表達式的組件可以是單個的字元、字元集合、字元范圍、字元間的選擇或者所有這些組件的任意組合。
正則表達式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
普通字元包括沒有顯式指定為元字元的所有可列印和不可列印字元。這包括所有大寫和小寫字母、所有數字、所有標點符號和一些其他符號。
非列印字元也可以是正則表達式的組成部分。下表列出了表示非列印字元的轉義序列:
所謂特殊字元,就是一些有特殊含義的字元,如上面說的 runoo*b 中的 ,簡單的說就是表示任何字元串的意思。如果要查找字元串中的 * 符號,則需要對 * 進行轉義,即在其前加一個 : runo*ob 匹配 runo ob。
許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元"轉義",即,將反斜杠字元 放在它們前面。下表列出了正則表達式中的特殊字元:
限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種。
正則表達式的限定符有:
由於章節編號在大的輸入文檔中會很可能超過九,所以您需要一種方式來處理兩位或三位章節編號。限定符給您這種能力。下面的正則表達式匹配編號為任何位數的章節標題:
請注意,限定符出現在范圍表達式之後。因此,它應用於整個范圍表達式,在本例中,只指定從 0 到 9 的數字(包括 0 和 9)。
這里不使用 + 限定符,因為在第二個位置或後面的位置不一定需要有一個數字。也不使用 ? 字元,因為使用 ? 會將章節編號限制到只有兩位數。您需要至少匹配 Chapter 和空格字元後面的一個數字。
如果您知道章節編號被限制為只有 99 章,可以使用下面的表達式來至少指定一位但至多兩位數字。
上面的表達式的缺點是,大於 99 的章節編號仍只匹配開頭兩位數字。另一個缺點是 Chapter 0 也將匹配。只匹配兩位數字的更好的表達式如下:
或
* 、+限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。
例如,您可能搜索 HTML 文檔,以查找括在 H1 標記內的章節標題。該文本在您的文檔中如下:
<H1>Chapter 1 - 介紹正則表達式</H1>
貪婪: 下面的表達式匹配從開始小於符號 (<) 到關閉 H1 標記的大於符號 (>) 之間的所有內容。
非貪婪: 如果您只需要匹配開始和結束 H1 標簽,下面的非貪婪表達式只匹配 <H1>。
如果只想匹配開始的 H1 標簽,表達式則是:
通過在 *、+ 或 ? 限定符之後放置 ?,該表達式從"貪心"表達式轉換為"非貪心"表達式或者最小匹配。
定位符使您能夠將正則表達式固定到行首或行尾。它們還使您能夠創建這樣的正則表達式,這些正則表達式出現在一個單詞內、在一個單詞的開頭或者一個單詞的結尾。
正則表達式的定位符有:
F. 求簡單的php 正則表達式(提取第一個冒號之前的字元串)
$temp="abcd:efghi:jklm";
$r=preg_replace('/([^:]+):.*/','$1',$temp);
echo$r;
G. php 正則表達式取標簽內容怎麼寫
代碼如下:
<?php
$str='<ddid="kj_num">
<spanclass="blueball_big">2</span>
<spanclass="blueball_big">6</span>
<spanclass="blueball_big">6</span>
</dd>';
$matches=array();
if(preg_match_all('/"blueball_big">(d+)</span>/',$str,$matches)){
foreach($matches[1]as$value){
print($value.'');
}
}
?>
H. php中文正則匹配
php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式——/^[\x{4e00}-\x{9fa5}]+$/u,
GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312漢字字母數字下劃線正則表達式。
編輯器查詢或者 js匹配中文
匹配中文字元的正則表達式: [\u4e00-\u9fa5]
或許你也需要匹配雙位元組字元,中文也是雙位元組的字元
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]