PHPRegex之定界符和原子介紹

來源:互聯網
上載者:User

標籤:style   http   color   io   ar   使用   strong   sp   資料   

1,Regex的定界符。

除了字母、數字和反斜線\以外的任何字元都可以為定界符號,比如 | |、//、{}、!!等等,但是需要注意,如果沒有特殊需要,我們都使用正斜線//作為Regex的定界符號。

2,Regex的構成。

我們看一下這個公式:/原子和元字元/模式修正符

也就是說,Regex的原子和元字元都放在定界符之間,而模式修正符放在定界符之外。

3,preg_match()函數

我們會在後面進行詳細解釋,這裡只是為了協助測試,其返回一個布爾值,表示是否成功匹配。

瞭解完以上簡單的內容,讓我們進入正題。

Regex中的原子

什麼是原子?原子是Regex的最基本組成單位,而且必須至少要包含一個原子。只要一個Regex可以單獨使用的字元,就是原子。

這個概念可能看起來很模糊,沒關係,下面我們來介紹一下Regex中原子的構成方式。

原子構成方式
1,所有列印(所有可以在螢幕上輸出的字串)和非列印字元(看不到的,比如空格,分行符號等等)

2,如果所有有意義的字元,想做為原子使用,統統使用“\”逸出字元進行轉義即可。如:\. \* \+ \? \( \<\>。

注意:" \ "逸出字元可以將有意義的字元轉成沒意義的字元,還可以將沒意義的字元轉為有意義的字元。如:\d表示任意一個十進位的數字。

3,在Regex中可以直接使用一些系統提供的代表範圍的原子,如下面的表格所示:

代表範圍的原子  說明  自訂原子標記法
 \d  表示任意一個十進位的數字  [0-9]
 \D  表示任意一個除數字這外的字元  [^0-9]
 \s  表示任意一個空白字元,空格、\n\r\t\f  [\n\r\t\f ]
 \S  表示任意一個非空白  [^\n\r\t\f ]
 \w  表示任意一個字 a-zA-Z0-9_  [a-zA-Z0-9_]
 \W  表示任意一個非字,除了a-zA-Z0-9_以外的任意一個字元  [^a-zA-Z0-9_]


4,自訂原子表(使用方括弧[]),可以匹配方括弧中的任何1個原子。

在上面的表格中我們已經將系統提供的範圍原子使用自訂的方式作了等價轉換。由於系統不可能提供所有我需要的原子,所以自訂原子表就顯得十分必要了,比如我們想要匹配字母或者數字,就需要將原子寫成[a-zA-Z0-9]。

這裡需要注意:

A,符號“-”表示範圍,如[a-z]表示小寫字母a到z,但千萬不要寫成[a-9]這種形式!

B, 符號“^”表示取反,一定要放在方括弧的開頭,比如我們想要匹配非數字,則原子為[^0-9]。

下面我們來看一下Regex原子的使用執行個體,代碼如下:

複製代碼 代碼如下:
<?php
$pattern = ‘/\d/‘;//數字原子表,也就是Regex的模式
$string = ‘dsadsadsa‘;//需要匹配的字串
if(preg_match($pattern, $string)){
echo "Regex<strong>{$pattern} </strong>和字串 <strong>{$string}</strong> 匹配成功";
}else{
echo "<span style="color: red;">Regex{$pattern}和字串{$string}匹配失敗</span>";
}
?>



注意:自訂原子表中的原子有一個被字串匹配上,就匹配成功了。而去掉自訂原子表的方括弧,則表示匹配整個字串。如‘/abc/‘表示字串中必須有abc這個子串才能被匹配,而‘/[abc]/‘表示字串中只要包含a、b和c中的任何一個字元,即被匹配。

大家可以將上面執行個體中的模式進行修改(也就是Regex的模式變數$pattern),進而對我們本節所講的Regex的原子進行驗證。

 

轉自:http://www.jb51.net/article/31451.htm

 

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

<?php
    //接受表單傳遞過來的資料
    $str = $_GET[‘str‘];
    //$str = "d";
    //聲明一個Regex
    $pattern = "/./";
    
    //使用一個正則函數
    $result = preg_match($pattern,$str,$match);
    //echo ‘匹配結果為:‘.$result;
    if($result){
        echo ‘<font color="green">匹配成功</font>‘;
    
    }else{
        echo ‘<font color="red">匹配失敗</font>‘;
    }
    echo ‘<hr />‘;
    var_dump($match);
?>

 

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

PHPRegex之定界符和原子介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.