国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP 正則表達式入門 Getting Started with PHP Regular Expre

zhangke3016 / 2389人閱讀

摘要:兼容的正則表達式已經實現了很多使用不同解析引擎的正則函數。中主要有兩個正則解析器一個稱為,另一個稱為兼容正則表達式。在中,每個正則表達式模式都是使用符合格式的字符串。

原文鏈接: Getting Started with PHP Regular Expressions

Last-Modified: 2019年5月10日16:23:19

譯者注:

本文是面向0正則基礎的phper, 很多正則的高級使用都沒有涉及到, 僅僅是一份簡單的入門.

對于有基礎的, 可直接查看本文末尾的正則表達式語法快速一覽表(圖) (不涉及修飾符)

譯者追加 - 語法速覽表

1. 什么是正則表達式

正則表達式(regex 或 regexp)的主要目的在于有效地搜索給定文本中的模式. 這些搜索模式使用正則表達式解析器理解的特殊格式編寫。

正則表達式源自Unix系統中一個名為grep的程序,該程序是用于幫助用戶處理字符串和操作文本。 通過遵循一些基本規則,我們可以創建非常復雜的搜索模式。

例如,你被賦予一項任務: 檢查電子郵件或電話號碼是否具有正確的格式。通過使用一些簡單的命令,這些問題可以通過正則表達式輕松解決。 正則語法初學時并不那么簡單,但是一旦你學會了它,你就會意識到你可以輕松地進行復雜搜索,只需鍵入簡短的字符就可以從不同的角度處理問題。

2. Perl兼容的正則表達式

PHP已經實現了很多使用不同解析引擎的正則函數。PHP中主要有兩個正則解析器,一個稱為POSIX,另一個稱為PCRE(Perl Compatible Regular Expression, Perl兼容正則表達式)。

POSIX的PHP函數前綴是 ereg_自從PHP 5.3發布后,這個引擎已被棄用,但讓我們來看看更優,更快的PCRE引擎。

在PHP中,每個PCRE函數都以 preg_ 開頭,例如 preg_match 或 preg_replace。您可以閱讀PHP文檔中的完整功能列表。

3. 基礎語法

要使用正則表達式,你首先需要學習語法。該語法包含一系列字母,數字,點,連字符和特殊符號,我們可以使用不同的括號將它們組合在一起。

在PHP中,每個正則表達式模式都是使用符合 Perl 格式的字符串。在 Perl 中,在正斜杠之間寫入正則表達式模式,例如 /hello/。在PHP中則是一個字符串 "/hello/"

現在,讓我們看看一些運算符,它們是正則表達式的基本構建塊。

語法 說明
^ ^ 標志著模式的開始,盡管在某些情況下它可以省略
$ 與 ^ 符號對應,$ 符號標志著搜索模式的結束
. 匹配任何單個字符
? 它將匹配前面的模式 0 或 1 次
+ 它將匹配前面的模式 1 或 更多 次
* 它將匹配前面的模式 0 或 更多次
布爾 或
匹配范圍內的元素
() 將不同的模式元素組合在一起
[] 匹配中括號之間的任何單個字符
{min, max} 它用于匹配確切的字符數
d 匹配任何單個數字
D 匹配任何單個非數字
w 匹配單詞字符, 包括下劃線 _
W 匹配任何非單詞字符
s 匹配空白符

作為PHP中的一個補充,使用簡單的斜杠 來轉義正斜杠字符。示例:"/he/llo/"

為了簡要了解如何使用這些運算符,讓我們看一些示例:

示例 說明
"/hello/" 匹配單詞 hello
"/^hello/" 匹配處于字符串開頭的 hello . 可能的匹配比如 hello, helloworld , 但不會匹配 worldhello
"/hello$/" 匹配處于字符串結尾的 hello
"/he.o/" 匹配任何位于 heo 的任何字符, 比如 helo , helo, heyo, 但不會匹配 hello
"/(he)?llo/" 匹配如 llohello
"/(hello)+/" 匹配 hello 一次或多次, 如 hello ,hellohello
"/(he)*llo/" 匹配 llo, hello, hehello, 但不會匹配 hellooo
`"/hello world/"` 匹配單詞 helloworld
"/[A-Z]/" 匹配從 AZ 的大寫字母
"/[abc]/" 匹配 a, b, c 中任意一個字符*
"/abc{1}/" ab 后精確匹配一個 c 字符, 如 abc, 但不匹配 abcc
"/abc{1,}/" ab 后匹配一個或多個 c字符, 如 abc , abcc
"/abc{2,4}/" ab 后匹配 2~4 個 c, 如 abcc, abccc, abcccc, 但不匹配 abc
譯者注: 上面示例中原文存在一些錯誤, 此處已修正.

除了運算符之外,還有正則表達式修飾符,可以全局改變搜索模式的行為。

正則表達式修飾符放在模式之后,就像 "/hello/i" 一樣,它們由單個字母組成,例如 i 表示模式不區分大小寫, x 表示忽略模式中的空白字符。 關修飾符的完整列表,請訪問PHP的在線文檔。

正則表達式的真正功能在于組合這些運算符和修飾符,從而創建相當復雜的搜索模式。

4. 在 PHP 中使用正則

在PHP中,我們總共有九個PCRE函數可以使用。這是列表:

preg_filter – 執行一個正則表達式搜索和替換

preg_grep – 返回匹配模式的數組條目

preg_last_error – 返回最后一個PCRE正則執行產生的錯誤代碼

preg_match – 執行匹配正則表達式

preg_match_all – 執行一個全局正則表達式匹配

preg_quote – 轉義正則表達式字符

preg_replace – 執行一個正則表達式的搜索和替換

preg_replace_callback – 執行一個正則表達式搜索并且使用一個回調進行替換

preg_split – 通過一個正則表達式分隔字符串

最常用的兩個函數是 preg_matchpreg_replace

讓我們首先創建一個測試字符串,我們將在其上執行正則表達式搜索。經典的 Hello World 示例:

$test_string = "hello world";

如果我們只是想搜索單詞hello或world,那么搜索模式將如下所示:

preg_match("/hello/", $test_string);
preg_match("/world/", $test_string);

如果我們希望查看字符串是否以單詞 hello 開頭,我們只需將 ^ 字符放在搜索模式的開頭,如下所示:

preg_match("/^hello/", $test_string);

請注意,正則表達式區分大小寫,上面的模式與單詞 hElLo 不匹配。 如果我們希望模式不區分大小寫,則應該應用以下修飾符:

preg_match("/^hello/i", $test_string);    

注意模式末尾正斜杠后面的字符 i

現在讓我們來看一個更復雜的搜索模式。如果我們要確認字符串中的前五個字符由字母, 數字 組合,該怎么辦?

preg_match("/^[A-Za-z0-9]{5}/", $test_string);

讓我們剖析一下這種搜索模式 . 首先,通過使用 ^,我們指定該字符串必須以字母, 數字開頭。這由 [A-Za-z0-9] 來指定。

A-Z 表示從A到Z的所有字符, a-z 則表示從 a到z的所有小寫字符.

{5} 告知正則表達式解析器此處剛好有五個字符。如果是六個而不是五個,解析器匹配不到任何東西.

上述正則表達式可以優化為以下形式:

preg_match("/^w{5}/", $test_string);

w 表示任何字母, 數字, 包括下劃線字符 _


5. 該章節不存在
譯者注: 原文沒有 5... 的確沒有
6. 有用的正則函數

以下是一些使用正則表達式的PHP函數,您可以每天使用它們。

譯者注: 實際上有其他更為方便的替代函數

比如驗證郵箱可以使用 filter_var($email,FILTER_VALIDATE_EMAIL)

想了解更多的點擊此處

6.1 驗證e-mail

此函數將驗證給定的電子郵件地址字符串,以查看其是否具有正確的格式。

function validate_email($email_address)
{
    if( !preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+
                     ([a-zA-Z0-9._-]+)+$/", $email_address))
    {
        return false;
    }    
    return true;
}
6.2 驗證URL
function validate_url($url)
{
    return preg_match("|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?
                      (/.*)?$|i", $url);
}
6.3 移除重復的單詞

我經常在文本中找到重復的單詞,比如 this this。這個方便的函數功能可以刪除這些重復的單詞。

function remove_duplicate_word($text)
{
    return preg_replace("/(w+)s1/i", "$1", $text);
}

譯者注: 原文處的正則表達式有誤, 此處已修正. 以下是原文給出的函數:

function remove_duplicate_word($text)
{
    return preg_replace("/s(w+s)1/i", "$1", $text);
}
6.4 驗證字母數字,短劃線,下劃線和空格
function validate_alpha($text)
{
    return preg_match("/^[A-Za-z0-9_- ]+$/", $text);
}
6.5 驗證美國郵政編碼
function validate_zip($zip_code)
{
    return preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code);    
}
7. 正則速查表 7.1 元字符
元字符 Description
^ 標記字符串的開頭
$ 標記字符串的結尾
. 匹配任意單個字符
布爾或
() 組元素
[abc] 匹配 a,b,c 中任意一個
[^abc] 匹配除 a,b,c 外的任意一個
s 空白字符
a? 0 個或 1 個 a, 等同于 a{0,1}
a* 0 個或 多個 a
a+ 1 個或 多個 a
a{2} 精確匹配 2 個 a
a{,5} 最多 5 個 a
a{5,10} 匹配 5~10 個 a
w 單詞字符, 等同于 [A-Za-z0-9_]
W 任何非單詞字符
s 任何空白字符
S 任何非空白字符
d 任何數字, 等同于 [0-9]
D 任何非數字, 等同于 [^0-9]
7.2 模式修飾符
模式修飾符 說明
i 忽略大小寫
m 多行模式
S 模式的額外分析
u 模式字符串被認為是 UTF-8 編碼
譯者注: 上述模式修飾符是大小寫敏感的.

還有一部分修飾符原文沒有列舉出來, 畢竟只是面向入門

8. 相關參考書目

15 PHP Regular Expression for Web Developers

Mastering Regular Expressions in PHP

Introduction to PHP Regex

9. Author: Joel Reyes
譯者注: 該部分不翻譯

Joel Reyes Has been designing and coding web sites for several years, this has lead him to be the creative mind behind Looney Designer a design resource and portfolio site that revolves around web and graphic design.

Write for Us! We are looking for exciting and creative articles, if you want to contribute, just send us an email.


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31435.html

相關文章

  • [Regular Expression]Mastering Python Regular Expre

    摘要:續上基礎通俗正則表達中兩個重要對象如下圖使用函數,返回為對象使用函數,如果到存在的結果,則返回對象,否則返回福利一個在線驗證自己寫的正則表達式是否正確的網站關于正則表達式中的如下圖中的前加入字母表明里面的表達式已經是而前面加了,表明,在做之 續上:[Regular Expression]Mastering Python Regular Expression基礎通俗(2) 1:Pyth...

    sihai 評論0 收藏0
  • [Regular Expression]Mastering Python Regular Expre

    摘要:續上基礎通俗三類常用的的簡寫形式偷懶需要用來對某一類特定字符進行匹配,通常,我們用的最多的字符就是下面的三類數字,字母和這類看不到占位符,上一部分學過通過方括號表示這三類的的方法由于上面的表達試比較長,所以需要有一種更簡單的寫法可以 續上:[Regular Expression]Mastering Python Regular Expression基礎通俗(1) 三類常用的meta...

    daydream 評論0 收藏0
  • PHP正則達式

    摘要:但在某些情況下,用正則表達式去驗證一個字符串比較復雜和費時。驗證信用卡號驗證域名從特定中提取域名將文中關鍵詞高亮顯示對于開發人員來說,正則表達式是一個非常有用的功能,它提供了查找,匹配,替換句子,單詞,或者其他格式的字符串。 正則表達式是程序開發中一個重要的元素,它提供用來描述或匹配文本的字符串,如特定的字符、詞或算式等。但在某些情況下,用正則表達式去驗證一個字符串比較復雜和費時。本文...

    Nekron 評論0 收藏0
  • Python實現命令行監控北京實時公交之一

    摘要:開頭先放上效果展示在命令行輸入,顯示基本信息,如下在命令行輸入,顯示北京路公交車的位置,如下紅色的說明在梅園附近有一輛公交車,并且會不斷刷新。 開頭先放上效果展示 在命令行輸入 python bus.py -i,顯示app基本信息,如下: showImg(https://segmentfault.com/img/bV8gmb?w=644&h=454); 在命令行輸入 python bu...

    vboy1010 評論0 收藏0
  • PHP 正則達式

    摘要:規范為的縮寫,中文即兼容正則表達式,由開發的庫,為很多現代工具所使用,大多數編程語言的正則表達式也都是集成該規范。接下來本文會對規范的正則表達式作出詳細介紹。正則語法分隔符當使用函數的時候,模式需要由分隔符閉合包裹。 概述 正則表達式(Regular Expression)是一種字符匹配工具,通過構建具有特定規則的模式,和輸入字符串數據進行比較,然后進行匹配、分割、替換等等的相關操作。...

    rozbo 評論0 收藏0

發表評論

0條評論

zhangke3016

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<