1. 程式人生 > >2017.8.09

2017.8.09

before php sage rep uio 大小 十進制 aaa 手機號

一、正則表達式

正則表達式是一種描述字符串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、截取匹配的字符串。

1、行定位符(^與$)

行定位符是用來描述字符串的邊界。$表示行結尾^表示行開始如"^de",表示以de開頭的字符串 "de$",表示以de結尾的字符串

2、單詞定界符"\b"

我們在查找的一個單詞的時候,如an是否在一個字符串”gril and body”中存在,很明顯如果匹配的話,an肯定是可以匹配字符串“gril and body”匹配到,怎樣才能讓其匹配單詞,而不是單詞的一部分呢?這時候,我們可以是喲個單詞定界符\b
\ban\b 去匹配”gril and body”的話,就會提示匹配不到。
當然還有一個大寫的\B

,它的意思,和\b正好相反,它匹配的字符串不能使一個完整的單詞,而是其他單詞或字符串中的一部分。如\Ban\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