如何徹底搞懂面向 Web 開發者的正則表達式?

2021-01-11 CSDN

對於正則表達式,開發者如何跳出雲裡霧裡的謎團?

作者 | Chris Achard

譯者 | 彎月,責編 | 郭芮

以下為譯文:

正則表達式能在字符串中查找匹配特定模式的子字符串。

在JavaScript中,可以通過斜線 / / 來創建,也可以通過new RegExp()來創建,然後就能使用match、test、replace等方法。你可以事先定義正則表達式,也可以在調用方法時隨時定義。

每次匹配一個字符,將多個字符放到方括號 [] 中可以匹配多個匹配的字符。

用橫線 - 匹配字符範圍。

在正則表達式末尾添加額外的標記來修改匹配器的行為。

JavaScript支持如下標記:

i = 不區分大小寫m = 多行匹配g = 全局匹配(查找所有匹配,而不是僅查找一個)

在模式開頭使用箭頭 ^ 表示「字符串開頭」。

在模式末尾使用美元符號 $ 表示「字符串結尾」。

將多個模式放在一起以匹配更長的字符串。

使用通配符和特殊的轉義字符來匹配字符類。

. = 除了換行之外的任何字符。

\d = 數字\D = 非數字\s = 空白\S = 非空白\n = 新行

用數量修飾符來匹配特定數量的字符。

* = 零個或多個+ = 一個或多個?= 零個或一個{3} = 正好3個{2,4} = 2, 3, 或4個{2,} = 2或多個

使用括號 () 來分組。

match會返回完整的匹配,外加每個分組,除非你使用了g標記。

在括號 () 內使用管道符號 | 來表示分組的匹配內容。

| = 或者

要匹配特殊字符,需要用反斜槓 \ 將其轉義。

JS正則表達式中的特殊字符包括:^ $ \ . * + ? ( ) [ ] { } |

所以,要想匹配星號,需要使用:

\*而不能僅使用 *

要想匹配除了特定字符之外的任意字符,可以在方括號內使用^。

這意味著 ^ 有兩種含義,可能會造成混淆。

當它出現在正則表達式開頭時,它表示「字符串開頭";出現在方括號內時,表示「不是這些字符串」。

正則表示可以用來查找並匹配各種東西,比如URL和文件名。

但是!對於非常複雜的任務,使用正則表達式時一定要小心,比如分析電子郵件(你很容易就會弄得一團糟),或者分析HTML(HTML不是正規的語言,所以沒辦法完全使用正則表達式來解析)。

當然,正則表達式還有更多內容,如懶惰 vs 貪婪,前向,捕獲等。

但是,對於絕大多數Web開發者來說,掌握這些最基本的組成部分就夠了。

原文:https://dev.to/chrisachard/intro-to-regex-for-web-developers-2fj4

作者:Chris Achard,程式設計師,日常使用JS, React, Rails和Node,在egghead.io上講課。

本文為 CSDN 翻譯,轉載請註明來源出處。

相關焦點

  • 精通正則表達式的 12 個有用資源
    而正則表達式用來處理這樣的任務可以說是輕而易舉,而且代碼量很少。另外一方面,正則表達式被認為是非常難學的(@紅薯 深以為然),但其實不盡然。這裡有 12 個很棒的資源可以讓你學習並精通正則表達式。一個用來測試正則表達式的 web app,支持 JavaScript、Python 和 PCRE
  • 精通正則表達式的 12 個有用資源 - OSCHINA - 中文開源技術交流社區
    而正則表達式用來處理這樣的任務可以說是輕而易舉,而且代碼量很少。另外一方面,正則表達式被認為是非常難學的(@紅薯 深以為然),但其實不盡然。這裡有 12 個很棒的資源可以讓你學習並精通正則表達式。一個用來測試正則表達式的 web app,支持 JavaScript、Python 和 PCRE
  • 正則表達式在VBA中間是如何應用?正則表達式的實現方式?
    Hi,大家好,本章節開始將會從零開始和大家用圖文的方式,讓你從零基礎學會正則表達式!有興趣的小夥伴可以持續關注我,或者在專欄中進行查看自我學習,願與君攜手前行!在上一個章節說到正則表達式的入門級知識點,本節將會與大家分享一下正則表達式的是具體實現方式是怎麼樣的?
  • 正則表達式A - 方法及特殊字符用法
    課程大綱 1.正則表達式的概念及作用 2.正則表達式的創建方法 3.正則表達式的用法 正則表達式概念: 正則表達式是由普通字符及特殊字符組成的對字符串進行過濾的邏輯公式 正則表達式的創建方式: 1.字面量方式創建 (隱式創建): var reg = /正則表達式/gi;
  • 正則表達式和 CPU 100%有什麼故事?
    沒關係,我們一點點從正則表達式的原理開始講起。正則表達式引擎正則表達式是一個很方便的匹配符號,但要實現這麼複雜,功能如此強大的匹配語法,就必須要有一套算法來實現,而實現這套算法的東西就叫做正則表達式引擎。
  • 正則表達式B - 實際表單小例子
    正則表達式的實際運用 數字、字母、下劃線組成的6-15位字符,且不能以數字開頭 編寫思路詳解:1.首先獲取input按鈕 2.然後我們要在用戶輸入完之後檢測,所以可以用onchange改變之後 3.然後再獲取用戶輸入的內容val = this.value 4.獲取內容後對其內容進行用正則表達式檢測 reg = /^
  • 正則表達式在線檢測工具推薦
    正則表達式(Regular Expression)在web開發中的應用非常廣泛,很多時候使用它會給開發帶來極大的便利。但是,正則表達式的編寫和使用是個比較複雜的過程。很多時候,即使將表達式寫出來了,也不能保證正確。那麼,有沒有便捷的檢測方法呢?——有。
  • 代碼詳解:Python正則表達式的終極使用指南
    但如果有re模塊,則只需兩行代碼:import repattern = r"[;.,–]"print(len(re.findall(pattern,string)))-19本文討論的是最常用的正則表達式模式,以及一些經常使用的正則表達式函數。什麼是正則表達式?
  • 正則表達式:如何匹配一個或多個字符?
    讀懂正則表達式就這麼簡單匹配純文本Ben是一個正則表達式。因為本身是純文本,所以看起來可能不像是一個正則表達式,但它的確是。正則表達式可以包含純文本(甚至可以只包含純文本)。當然,像這樣使用正則表達式是一種浪費,但把它作為我們學習正則表達式的起點還是很不錯的。
  • MySQL如何使用正則表達式?(代碼示例)
    MySQL支持基於正則表達式和regexp運算符的另一種模式的匹配操作。下面本篇文章就帶大家認識一下MySQL的正則表達式(Regexp),通過示例來簡單介紹在MySQL中如何使用正則表達式(Regexp),希望對大家有所幫助。
  • Python程式語言:如何運用正則表達式
    這篇文章,小編要和大家分享的知識是Python語言的正則表達式,以及自己學到的使用方法!學會正則表達式可以幫助我們抓取網絡信息,正則表達式又叫Re庫!這裡我們要了解什麼是正則表達式,正則表達式是用來簡潔表達一組字符串的表達式!
  • 【第160期】指尖上的正則表達式–入門篇
    不僅僅眾多UNIX工具支持正則表達式,近二十年來,在WINDOW的陣營下,正則表達式的思想和應用在大部分 Windows 開發者工具包中得到支持和嵌入應用!從正則式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和發展,WINDOWS系列產品對正則表達式的支持發展到無與倫比的高度,目前幾乎所有 Microsoft 開發者和所有.NET語言都可以使用正則表達式。
  • 來一輪帶注釋的demo,徹底搞懂javascript中的replace函數
    var str = "abcd-abcd-abcd";var result = str.replace("a", "");console.log(result);//輸出 bcd-abcd-abcd//當第一個參數是一個簡單字符串時,僅替換第一個匹配項 2.走進replace之正則表達式
  • 使用JavaScript對正則表達式進行解析
    我的目的不是要嚇你,一旦我們了解了正則表達式那它就變得很簡單:讓人畏懼.....今天,我們將揭開正則表達式的神秘面紗,看到它的含義,它的用途以及如何設計正則表達式來解決問題。1、什麼是正則表達式?正則表達式是描述數據字符串中模式的一種方式。
  • Python「正則表達式」詳解(上)
    大家好,今天我們一起學習以下Python中的「正則表達式」,說到正則表達式,大家可能比較陌生,不過我卻要告訴你,你每天都在使用正則表達式,不要不承認,就問你最常見的,瀏覽器每天用不?淘寶經常逛不?你在搜索框裡輸入幾個文字,按下回車,就出來大量結果,你想想這是怎麼辦到的,是正則表達式,可以好不誇張的講,沒有正則表達式,就沒有搜尋引擎。
  • Perl開發者必須了解的14個資源
    下面,我們整理了Perl開發者不得不了解的14個資源,希望對Perl開發者有用,僅供參考。0. Programming Perl:Perl語言設計者Larry Wall親自操刀,經典的大駱駝書,重點推薦。1.
  • PHP正則表達式的快速學習方法
    舉例來說,正則表達式的一個最為普遍的應用就是用於驗證用戶在線輸入的郵件地址的格式是否正確。如果通過正則表達式驗證用戶郵件地址的格式正確,用戶所填寫的表單信息將會被正常處理;反之,如果用戶輸入的郵件地址與正則表達的模式不匹配,將會彈出提示信息,要求用戶重新輸入正確的郵件地址。由此可見正則表達式在WEB應用的邏輯判斷中具有舉足輕重的作用。
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。2.星號「*」一個星號可以表示它前面的一個子表達式(普通字符、另一個或幾個正則表達式符號)0次到無限次。3.問號「?」問號表示它前面的子表達式0次或者1次。注意,這裡的問號是英文問號。
  • 給JAVA程式設計師的正則表達式一課
    「不會正則表達式,就算寫遍代碼也嘛不是」。說到正則表達式,可能動態語言的碼農Perl,Python,JS甚至是Golang的開發人員可能都熟悉。對Java碼農來說,可能CURD手到擒來,Spring Stuts Hibernat耳聞能詳,但是說到Regex RE模式,可能熟練的少。那麼,今天蟲蟲就來給廣大Java碼農來補補正則的課。
  • 學習Python正則表達式
    如何不需要一個接一個地複製和粘貼,就可以輕鬆地找到這些電話號碼?Python中的正則表達式(re)就可以解決這個問題!正則表達式正則表達式是一個具有特殊字符的序列。它有助於檢查字符串中的每個字符,看它是否與某個模式匹配:哪些字符在什麼位置出現了多少次。