如何在PHP中使用Regex(1)_PHP教程

來源:互聯網
上載者:User
何為Regex?

幾年前,我對 Web 表單的輸入框做了一些有趣的檢驗。使用者將在此表單中輸入電話號碼。隨後,此電話號碼會按使用者鍵入的形式列印在使用者的廣告中。按照要求,美國的電話號碼可以幾種方式輸入:可以是 (555) 555-5555,也可以是 555-555-5555,但不能接受 555-5555 這樣的形式。

您或許會感到奇怪,為什麼我們不拋開所有的非數字字元,只保證剩餘的字元總數為 10 呢?這種方法確實可行,但無法阻止使用者輸入 !555?333-3333 這樣的內容。

以一名 Web 開發人員的眼光來看,這種情況帶來了一項有趣的挑戰。我可以編寫常式來檢查各種不同格式,但我希望能夠找到一種解決方案,假如使用者隨後認可 555.555.5555 這樣的格式,這種解決方案能具備一定的靈活性。

這正是Regex(簡稱為 regex)的適用情境。之前我已經將它們剪下並粘貼到了應用程式中,但從未發現任何難以理解的文法問題。Regex 看上去非常像數學運算式。當您看到一個形如 2x2=4 的運算式時,您通常會想到 “2 乘以 2 等於 4”。Regex與之非常類似。閱讀過本文後,當您看到一個這樣的Regex ^b$ 時,您就會告訴自己:“一行的開頭是 b,隨後就是行尾”。不僅如此,您還會意識到在 PHP 中使用Regex有多麼簡單。

使用 regex 的時機

在有規則可循時,您應使用 regex 來完成搜尋和替換操作,但不必具有需要找到或替換的確切字元。舉例來說,在上文中提到的電話號碼的例子中,使用者定義了表明所輸入電話號碼的格式的規則,但並未定義電話號碼中所包含的數字。這同樣適用於有大批使用者輸入的情境。美國州名縮寫可限制為兩個從 A 到 Z 的大寫字母。這裡也可使用Regex,您可簡單地將表單中的文本或使用者輸入限制為字母表中的字母,而無需考慮大小寫和長度問題。

不宜使用 regex 的時機

Regex功能強大,但也有一些缺陷。其中之一就是要求具備讀寫運算式的相關技能。如果您決定在應用程式中包含Regex,就應該對其進行完整的注釋。這樣,此後如果有其他人需要更改運算式,即可在不中斷功能的情況下完成更改。另外,如果您對於使用Regex不夠熟悉,可能會發現它們難於調試。

為避免出現這些難題,在更簡單的內建功能足以很好地解決問題時不要使用Regex。

POSIX 與 PCRE

PHP 支援兩種Regex的實現:Portable Operating System Implementation(POSIX)和 Perl-Compatible Regular Expression(PCRE)。這兩種實現提供了不同的特性,但它們在 PHP 中使用起來一樣簡單。您所使用的 regex 風格取決於您過去在 regex 使用方面的經驗和使用習慣。有一些證據表明,PCRE 運算式的速度比 POSIX 運算式要略微快一點,但在絕大多數應用程式中,這一差別體現得不是那麼明顯。

在本文的樣本中,各 regex 方法的文法都包含在注釋中。在函數文法中,regex 為 regex 參數,所搜尋的字串為 string。括弧中的參數是可選的,由於本教程主要介紹基礎內容,故不會給出全部選擇性參數的介紹。

1

http://www.bkjia.com/PHPjc/446714.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446714.htmlTechArticle何為Regex? 幾年前,我對 Web 表單的輸入框做了一些有趣的檢驗。使用者將在此表單中輸入電話號碼。隨後,此電話號碼會按使用者鍵入...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.