2017.8.09
一、正則表達式
正則表達式是一種描述字符串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、截取匹配的字符串。
1、行定位符(^與$)
行定位符是用來描述字符串的邊界。“$”
表示行結尾“^”
表示行開始如"^de"
,表示以de開頭的字符串 "de$"
,表示以de結尾的字符串。
2、單詞定界符"\b"
我們在查找的一個單詞的時候,如an是否在一個字符串”gril and body”中存在,很明顯如果匹配的話,an肯定是可以匹配字符串“gril and body”匹配到,怎樣才能讓其匹配單詞,而不是單詞的一部分呢?這時候,我們可以是喲個單詞定界符\b。
\ban\b 去匹配”gril and body”的話,就會提示匹配不到。
當然還有一個大寫的\B
3、選擇字符(|) ,表示或
選擇字符表示或的意思。如Aa|aA,表示Aa或者是aA的意思。註意使用”[]”與”|”的區別,在於”[]”只能匹配單個字符,而”|”可以匹配任意長度的字符串。在使用”[]”的時候,往往配合連接字符”-“一起使用,如[a-d],代表a或b或c或d。
4、排除字符,排除操作
正則表達式提供了”^”來表示排除不符合的字符,^一般放在[]中。如[^1-5],該字符不是1~5之間的數字。
5、限定符(?* + {n,m})
限定符主要是用來限定每個字符串出現的次數
限定字符 含義 ? 零次或一次 * 零次或多次 + 一次或多次 {n} n次 {n,} 至少n次 {n,m} n到m次
如(D+)表示一個或多個D
6、點號操作符:匹配任意一個字符(不包含換行符)
7、表達式中的反斜杠(\
)
表達式中的反斜杠有多重意義,如轉義、指定預定義的字符集、定義斷言、顯示不打印的字符。
轉義字符:轉義字符主要是將一些特殊字符轉為普通字符。而這些常用特殊字符有”.”,”?”、”\”等。
指定預定義的字符集:
字符 | 含義 |
---|---|
\d | 任意一個十進制數字[0-9] |
\D | 任意一個非十進制數字 |
\s | 任意一個空白字符(空格、換行符、換頁符、回車符、字表符) |
\S | 任意一個非空白字符 |
\w | 任意一個單詞字符 |
\W | 任意個非單詞字符 |
顯示不可打印的字符:
字符 | 含義 |
---|---|
\a | 報警 |
\b | 退格 |
\f | 換頁 |
\n | 換行 |
\r | 回車 |
\t | 字表符 |
8、括號字符()
在正則表達式中小括號的作用主要有:
- 改變限定符如(|、* 、^)的作用範圍
如(my|your)baby,如果沒有”()”,|將匹配的是要麽是my,要麽是yourbaby,有了小括號,匹配的就是mybaby或yourbaby。 - 進行分組,便於反向引用
9、反向引用
反向引用,就是依靠子表達式的”記憶”功能,匹配連續出現的字串或是字符。如(dqs)(pps)\1\2,表示匹配字符串dqsppsdqspps。在下面php應用中,我將詳細展開學習反向引用。
10、模式修飾符
模式修飾符的作用是設定模式,也就是正則表達式如何解釋。php中主要模式如下表:
修飾符 | 說明 |
---|---|
i | 忽略大小寫 |
m | 多文本模式 |
s | 單行文本模式 |
x | 忽略空白字符 |
11、 正則表達式的組成部分:
1. 原子是組成正則表達式的基本單位,在分析正則表達式時,應作為一個整體。
原子包括以下內容:
> 單個字符、數字,如a-z,A-Z,0-9。
> 模式單元,如(ABC)可以理解為由多個原子組成的大的原子。
> 原子表,如 [ABC]。
> 重新使用的模式單元,如:\\1
> 普通轉義字符,如:\d, \D, \w
> 轉義元字符,如:\*,\.
> 元字符
2. 元字符(具有特殊意義字符):
[] 表示單個字符的原子表
例如:[aoeiu] 表示任意一個元音字母
[0-9] 表示任意一位數字
[a-z][0-9]表示小寫字和一位數字構成的兩位字符
[a-zA-Z0-9] 表示任意一位大小字母或數字
[^] 表示除中括號內原子之外的任何字符 是[]的取反
例如:[^0-9] 表示任意一位非數字字符
[^a-z] 表示任意一位非小寫字母
{m} 表示對前面原子的數量控制,表示是m次
例如:[0-9]{4} 表示4為數字
[1][3-8][0-9]{9} 手機號碼
{m,} 表示對前面原子的數量控制,表示是至少m次
例如: [0-9]{2,} 表示兩位及以上的數字
{m,n}表示對前面原子的數量控制,表示是m到n次
例如: [a-z]{6,8} 表示6到8位的小寫字母
* 表示對前面原子的數量控制,表示是任意次,等價於{0,}
+ 表示對前面原子的數量控制,表示至少1次,等價於{1,}
? 表示對前面原子的數量控制,表示0次或1次(可有可無) 等價於{0,1}
例如:正整數:[1-9][0-9]*
整數:[\-]?[0-9]+
email:
() 表示一個整體原子,【還有一個子存儲單元的作用】。
也可以使用?:來拒絕子存儲。 (?:.*?)
例如:(red) 字串red
(rea|blue) 字串red或blue
(abc){2} 表示兩個abc
| 表示或的意思
(rea|blue) 字串red或blue
^ 用在正則單元塊的開頭處,表示必須以指定的開頭
$ 用在正則單元塊的結尾處,表示必須以指定的結尾
. 表示任意一個除換行符之外的字符
常用組合: .*? 表示最小匹配所有字符(拒絕貪婪匹配)
二、正則表達式在php中應用
1.正則表達式匹配:
//正則匹配函數preg_match() //模糊匹配(包含形式) //if(preg_match("/a/","qwertayuio")){ //匹配字串中是否包含a字符 //if(preg_match("/(abc)/","qwerta bcayuio")){ //匹配字串中是否包含abc字串 //if(preg_match("/[abc]/","qwertbycuiop")){ //匹配字串中是否包含a、b或c字字符 //if(preg_match("/[0-9]/","qwertbycuiop")){ //匹配字串中是否包數字 //if(preg_match("/[a-z]/","12345a6789")){ //匹配字串中是否包小寫字母 //if(preg_match("/[0-9]{2}/","qwe89rqw9re8qwer",$a)){ //匹配字串中是否包兩位的數字 //if(preg_match("/[0-9]{2,}/","qwe12rqw9re8qwer",$a)){ //匹配字串中是否包至少兩位的數字 if(preg_match("/[0-9]{2,4}/","qwe12567rqw9re8qwer",$a)){ //匹配字串中是否包至少兩位到4位的數字 echo "匹配!"; }else{ echo "不匹配!"; } echo $a[0]; echo "<hr/>"; //精確匹配 //if(preg_match("/^[0-9]{2}$/","34")){ //精確匹配兩位數字 if(preg_match("/^[1][35][0-9]{9}$/","13520319616")){ //匹配一個手機號碼 echo "匹配!"; }else{ echo "不匹配!"; }
2.正則的元字符匹配:
//正則的元字符使用 //檢測是否是一個合法的mail地址 if(preg_match("/^[\w\.]+@[\w]+(\.[a-zA-Z]+){1,3}$/","[email protected]")){ echo "正確"; }else{ echo "錯誤"; } /* //檢測是否是一個十六進制整數(正整數,負整數,0) if(preg_match("/^-?0[xX][\da-fA-F]+$/","-2")){ echo "正確"; }else{ echo "錯誤"; } //檢測是否是一個整數(正整數,負整數,0) //if(preg_match("/^-?[0-9]+$/","-2")){ if(preg_match("/^-?\d+$/","-2")){ echo "正確"; }else{ echo "錯誤"; } */ /* //檢測一個變量名是否正確 //if(preg_match("/^[a-zA-Z_][a-zA-Z0-9_]*$/","1a5b_c")){ if(preg_match("/^[a-zA-Z_][\w]*$/","a5b_c")){ echo "正確"; }else{ echo "錯誤"; } */ //匹配字串中的4位數字 //preg_match("/[0-9]{4}/","qweabi123srqcdwer456iabs7890asfcd",$a); //preg_match("/\d{4}/","qweabi123srqcdwer456iabs7890asfcd",$a); //var_dump($a[0]); //匹配:7890 //preg_match_all("/(ab|cd)/","qweabisrqcdweriabsasfcd",$a); //var_dump($a[0]); //匹配字串所有ab或cd //preg_match_all("/is/","qweisrqwerisasfd",$a); //var_dump($a); //匹配字串所有is //preg_match("/.*/","*a\nbc",$a); //var_dump($a); //*a
3.正則表達式匹配網頁:
//正則匹配函數:preg_match preg_match_all $str=<<<yfstr <div id="mainNav" class="clearfix"> <a href="index.php">首頁</a> <a href="category.php?id=3">GSM手機</a> <a href="category.php?id=4">雙模手機</a> <a href="category.php?id=6">手機配件</a> <a href="group_buy.php">團購 商品</a> <a href="activity.php">優惠活動</a> <a href="snatch.php">奪寶奇兵</a> <a href="auction.php">拍賣活動</a> <a href="exchange.php">積分商城</a> <a href="message.php">留言板</a> <a href="http://bbs.ecshop.com/">EC論壇</a> </div> yfstr; echo "<table width=‘900‘ border=‘1‘>"; echo "<tr><th>名稱</th><th>URL地址</th><th>鏈接</th></tr>"; //使用正則匹配 preg_match_all("/<a href=\"(.*?)\".*?>(.*?)<\/a>/s",$str,$a);//一直搜索到指定字符串的結尾,獲取所有匹配到的結果 foreach($a[0] as $k=>$v){ echo "<tr>"; echo "<td>{$a[2][$k]}</td>"; echo "<td>{$a[1][$k]}</td>"; echo "<td>{$v}</td>"; echo "</tr>"; } echo "</table>";
4、正則的其他函數使用
//正則的其他函數使用: //preg_quote -- 轉義正則表達式字符 //preg_split -- 用正則表達式分割字符串 //preg_replace -- 執行正則表達式的搜索和替換 //1.preg_quote -- 轉義正則表達式字符 echo preg_quote("(abc){10}","‘");//在每個增則表達式語法的字符前增加一個反斜杠 $s = "a{4}"; preg_match("/".preg_quote($s)."/","werta{4}yu",$a); var_dump($a); echo "<br/>"; //2. preg_split -- 用正則表達式分割字符串 $s = "12,34:56;784;35,67:897:65"; $list = preg_split("/[,:;]/",$s); var_dump($list); echo "<hr/>"; //3. preg_replace執行正則表達式的搜索和替換 $s = "12,34:56;784;35,67:897:65"; //要求將上面的:,;都換成空格 echo preg_replace("/[,;:]/"," ",$s); $str = "<ul style=‘color:red‘> <li>aaaaa</li> <li>bbbbb</li> <li>ddddd</li> <li>eeeee</li> </ul>"; //將上面字串中所有li標簽中都添加一個b標簽。 echo "<hr/>"; echo $str; echo "<hr/>"; //echo preg_replace("/<li>(.*?)<\/li>/","<li><b>\\1</b></li>",$str); //echo preg_replace("/<li>(.*?)<\/li>/","<li><b>\$1</b></li>",$str); echo preg_replace("/<li>(.*?)<\/li>/",‘<li><b>$1</b></li>‘,$str);
5、子存儲(擴展)
//子存儲使用 $date="[2012-08-09],[2012,09-19],[2011/08,09],[2012/10/09],[2013,08,01]"; //將上面字串中合法的日期匹配出來 preg_match_all("/\[[0-9]{4}([\-,\/])[0-9]{2}\\1[0-9]{2}\]/",$date,$a); var_dump($a); echo "<hr/>"; $str = "<ul style=‘color:red‘><br/> <li>aaaaa</li> <li>bbbbb</li> <li>ddddd</li> <li>eeeee</li> </ul>"; //將上面字串中的html標記刪除掉(替換空) echo preg_replace("/<\/?.*?\/?>/s","",$str);
常用正則表達式
^\d+$ \d 是代表0-9 $必須要以....結束 這是代表非負整數 正則表達式 平時做網站經常要用正則表達式,下面是一些講解和例子,僅供大家參考和修改使用: "^\d+$" //非負整數(正整數 + 0) "^[0-9]*[1-9][0-9]*$" //正整數 "^((-\d+)|(0+))$" //非正整數(負整數 + 0) "^-[0-9]*[1-9][0-9]*$" //負整數 "^-?\d+$" //整數 "^\d+(\.\d+)?$" //非負浮點數(正浮點數 + 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數 "^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數(負浮點數 + 0) "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數 "^(-?\d+)(\.\d+)?$" //浮點數 "^[A-Za-z]+$" //由26個英文字母組成的字符串 "^[A-Z]+$" //由26個英文字母的大寫組成的字符串 "^[a-z]+$" //由26個英文字母的小寫組成的字符串 "^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字符串 "^\w+$" //由數字、26個英文字母或者下劃線組成的字符串 "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址 "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //電話號碼 "^(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地址 匹配中文字符的正則表達式: [\u4e00-\u9fa5] 匹配雙字節字符(包括漢字在內):[^\x00-\xff] 匹配空行的正則表達式:\n[\s| ]*\r 匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正則表達式:(^\s*)|(\s*$) 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配網址URL的正則表達式:^[a-zA-z]+://([url=file://\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$]\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$[/url] 匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配國內電話號碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 匹配騰訊QQ號:^[1-9]*[1-9][0-9]*$ 元字符及其在正則表達式上下文中的行為: \ 將下一個字符標記為一個特殊字符、或一個原義字符、或一個後向引用、或一個八進制轉義符。 ^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的Multiline 屬性,^ 也匹配 ’\n’ 或 ’\r’ 之後的位置。 $ 匹配輸入字符串的結束位置。如果設置了 RegExp 對象的Multiline 屬性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。 * 匹配前面的子表達式零次或多次。 + 匹配前面的子表達式一次或多次。+ 等價於 {1,}。 ? 匹配前面的子表達式零次或一次。? 等價於 {0,1}。 {n} n 是一個非負整數,匹配確定的n 次。 {n,} n 是一個非負整數,至少匹配n 次。 {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗號和兩個數之間不能有空格。 ? 當該字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認 的貪婪模式則盡可能多的匹配所搜索的字符串。 . 匹配除 "\n" 之外的任何單個字符。要匹配包括 ’\n’ 在內的任何字符,請使用象 ’[.\n]’ 的模式。 (pattern) 匹配pattern 並獲取這一匹配。 (?:pattern) 匹配pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。 (?=pattern) 正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。 (?!pattern) 負向預查,與(?=pattern)作用相反 x|y 匹配 x 或 y。 [xyz] 字符集合。 [^xyz] 負值字符集合。 [a-z] 字符範圍,匹配指定範圍內的任意字符。 [^a-z] 負值字符範圍,匹配任何不在指定範圍內的任意字符。 \b 匹配一個單詞邊界,也就是指單詞和空格間的位置。 \B 匹配非單詞邊界。 \cx 匹配由x指明的控制字符。 \d 匹配一個數字字符。等價於 [0-9]。 \D 匹配一個非數字字符。等價於 [^0-9]。 \f 匹配一個換頁符。等價於 \x0c 和 \cL。 \n 匹配一個換行符。等價於 \x0a 和 \cJ。 \r 匹配一個回車符。等價於 \x0d 和 \cM。 \s 匹配任何空白字符,包括空格、制表符、換頁符等等。等價於[ \f\n\r\t\v]。 \S 匹配任何非空白字符。等價於 [^ \f\n\r\t\v]。 \t 匹配一個制表符。等價於 \x09 和 \cI。 \v 匹配一個垂直制表符。等價於 \x0b 和 \cK。 \w 匹配包括下劃線的任何單詞字符。等價於’[A-Za-z0-9_]’。 \W 匹配任何非單詞字符。等價於 ’[^A-Za-z0-9_]’。 \xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。 \num 匹配 num,其中num是一個正整數。對所獲取的匹配的引用。 \n 標識一個八進制轉義值或一個後向引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為後向引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個 八進制轉義值。 \nm 標識一個八進制轉義值或一個後向引用。如果 \nm 之前至少有is preceded by at least nm 個獲取得子表達式,則 nm 為後向引用。如果 \nm 之前至 少有 n 個獲取,則 n 為一個後跟文字 m 的後向引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。 \nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。 \un 匹配 n,其中 n 是一個用四個十六進制數字表示的Unicode字符。 匹配中文字符的正則表達式: [\x{4e00}-\x{9fa5}] 匹配雙字節字符(包括漢字在內):[^x00-xff] 匹配空行的正則表達式:n[s| ]*r 匹配HTML標記的正則表達式:/<(.*)>.*|<(.*) />/ 匹配首尾空格的正則表達式:(^s*)|(s*$) 匹配Email地址的正則表達式:w+([-+.]w+)[email protected]+([-.]w+)*.w+([-.]w+)* 匹配網址URL的正則表達式:[url=http://([w-]+.)+[w-]+(/[w]http://([w-]+.)+[w-]+(/[w[/url]- ./?%&=]*)? 利用正則表達式限制網頁表單裏的文本框輸入內容: 用正則表達式限制只能輸入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,‘‘)" 用正則表達式限制只能輸入全角字符: 用正則表達式限制只能輸入數字:onkeyup="value=value.replace(/[^d]/g,‘‘) "onbeforepaste="clipboardData.setData (‘text‘,clipboardData.getData(‘text‘).replace(/[^d]/g,‘‘))" 用正則表達式限制只能輸入數字和英文:onkeyup="value=value.replace(/[W]/g,‘‘) "onbeforepaste="clipboardData.setData (‘text‘,clipboardData.getData(‘text‘).replace(/[^d]/g,‘‘))" =========常用正則式 匹配中文字符的正則表達式: [\x{4e00}-\x{9fa5}] 匹配雙字節字符(包括漢字在內):[^\x00-\xff] 匹配空行的正則表達式:\n[\s| ]*\r 匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正則表達式:(^\s*)|(\s*$) 匹配IP地址的正則表達式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配網址URL的正則表達式:[url=http://(/[\w-]+\.)+[\w-]+(/[\w]http://(/[\w-]+\.)+[\w-]+(/[\w[/url]- ./?%&=]*)? sql語句:^(select|drop|delete|create|update|insert).*$ 1、非負整數:^\d+$ 2、正整數:^[0-9]*[1-9][0-9]*$ 3、非正整數:^((-\d+)|(0+))$ 4、負整數:^-[0-9]*[1-9][0-9]*$ 5、整數:^-?\d+$ 6、非負浮點數:^\d+(\.\d+)?$ 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+)?))$ 9、負浮點數:^(-((正浮點數正則式)))$ 10、英文字符串:^[A-Za-z]+$ 11、英文大寫串:^[A-Z]+$ 12、英文小寫串:^[a-z]+$ 13、英文字符數字串:^[A-Za-z0-9]+$ 14、英數字加下劃線串:^\w+$ 15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\‘:+!]*([^<>\"\"])*$ 17、郵政編碼:^[1-9]\d{5}$ 18、中文:^[\u0391-\uFFE5]+$ 19、電話號碼:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$ 20、手機號碼:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 21、雙字節字符(包括漢字在內):^\x00-\xff 22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那樣的trim函數) 23、匹配HTML標記:<(.*)>.*<\/\1>|<(.*) \/> 24、匹配空行:\n[\s| ]*\r 25、提取信息中的網絡鏈接:(h|H)(r|R)(e|E)(f|F) *= *(‘|")?(\w|\\|\/|\.)+(‘|"| *|>)? 26、提取信息中的郵件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 27、提取信息中的圖片鏈接:(s|S)(r|R)(c|C) *= *(‘|")?(\w|\\|\/|\.)+(‘|"| *|>)? 28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+) 29、提取信息中的中國手機號碼:(86)*0*13\d{9} 30、提取信息中的中國固定電話號碼:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 31、提取信息中的中國電話號碼(包括移動和固定電話):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 32、提取信息中的中國郵政編碼:[1-9]{1}(\d+){5} 33、提取信息中的浮點數(即小數):(-?\d*)\.?\d+ 34、提取信息中的任何數字 :(-?\d*)(\.\d+)? 35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+) 36、電話區號:/^0\d{2,3}$/ 37、騰訊QQ號:^[1-9]*[1-9][0-9]*$ 38、帳號(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 39、中文、英文、數字及下劃線:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
以上部分內容來自:http://www.cnblogs.com/yafei236/p/4168290.html。
2017.8.09