首頁 web前端 js教程 正規表示式分組的詳解(附代碼)

正規表示式分組的詳解(附代碼)

Mar 30, 2018 am 11:39 AM
程式碼 表達式 詳解

這次帶給大家正規表示式分組的詳解(附程式碼),正規表示式分組的注意事項有哪些,下面就是實戰案例,一起來看一下。

正規表示式分組:
如果想要匹配3個數字,正規表示式可以用以下寫法:

\d{3}

以上程式碼使用重複量詞可以符合3位數字。
但是在實際應用中,往往需要重複多個字符,例如我想重複ab兩個字符,使用以下代碼就不合適了,代碼如下:

ab{3}

以上正規表示式只能夠重複3次b。
為了實作重複多個字元可以使用小括號來指定子運算式或說分組來實作此功能,例如:

(ab){3}

#上面的正規則可以重複ab了。
所謂的分組就是使用小括號將一些項目包含起來,使其成為獨立的邏輯域,那麼就可以像處理一個獨立單元一樣去處理小括號的內容。

下面看一段程式碼實例:

(\d{1,3}\.){3}\d{1,3}

上面是一個簡單的ip匹配正規表示式。由小括號包裹的內容會被當作一個獨立的邏輯域來運作。
分組的作用:
在正規表示式中,分組具有舉足輕重的作用,以下就簡單對它的功能做一下簡單的介紹。

一.起到原始的分組作用:

把單獨的項目分組,以便合成子表達式,這樣就可以像處理一個單獨的字元那樣,對其應用|、+、*或?等元字元來操作它們。
實例程式碼如下:

var str="I love javascript and java";
console.log(str.match(/java(script)?/gi));
登入後複製

由上述程式碼的運行結果可以看出,正規表示式既可以匹配字串javascript也可以符合java,這是因在正規表示式中採用了分組,並使用重複量詞? ,可以使前面的子表達式重複0次或1次。

二.定義子模式:

分組另一個非常重要的作用就是在完整的模式中定義子模式。
當一個正規表示式成功的和目標字串相符時,可以從目標字串中抽出和小括號中字表達式相符的部分。
假如我們匹配的是以一個數字開頭的後面跟著一個或多個不區分大小寫的字母的字串,正規表示式可以這樣寫:

/\d[a -zA-Z]+/

假如我們真正關心和需要的是開頭的數字,那麼就可以將正規表示式的數字部分放入小括號就可以從檢索到的匹配中抽取數字.

/(\d)[a-zA-Z]+/

#三.引用子表達式:
正規表示語法中可以在同一個表達式中的後部引用前面的子表達式。這是透過在"\"後面跟隨數字來實現的。此數字指定了小括號字表達式在正規表示式中的位置,例如\1是引用的第一個帶有圓括號的子表達式,自然\2就是第二個帶有圓括號的子表達式。
特別注意:由於子表達式是可以相互嵌套的,那麼計算子表達式的位置的時候,只要確定左括號的位置即可。例如:

/(java(script))/

在以上正規表示式中,嵌套的子表示是可以用\2表示。
對於子表達式的引用,並不是引用的匹配模式,而是對子表示匹配內容的引用。一般來說子運算式的引用一般是用來實作一條約束,看下面的程式碼:

/(['"])[^'"]*\1/

通常情況下左右引號是相符的,如果前面是雙引號,那麼結尾也要是雙引號,前面是單引號那麼結尾也必須是單引號,並且字符串中間不能夠再出現其他的引號,例如:

"腳本之家歡迎您"
'腳本之家歡迎您'

那麼上面的正規表示式就實現此功能,當前面的子表達式匹配單引號的時候,那麼後面的\1也就表示的是單引號,如果子表示匹配的雙引號,那麼後面的\2就表示的是雙引號。
非引用型分組:
分組會佔用一定的系統資源,尤其是正規表示式較長的時候會降低匹配速度。有時候只是為了設定一個分組,並不需要引用,那麼使用非引用類型分組將會是一個好的選擇。

/(java(?:script))/

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS裡怎麼用正規則將字串中的多個空格替換為一個空格

在PHP裡使用正規的效率貪婪、非貪婪與回溯詳解(附程式碼)

#

以上是正規表示式分組的詳解(附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

藍色畫面代碼0x0000001怎麼辦 藍色畫面代碼0x0000001怎麼辦 Feb 23, 2024 am 08:09 AM

藍屏代碼0x0000001怎麼辦藍屏錯誤是電腦系統或硬體出現問題時的一種警告機制,代碼0x0000001通常表示出現了硬體或驅動程式故障。當使用者在使用電腦時突然遇到藍色畫面錯誤,可能會感到驚慌失措。幸運的是,大多數藍色畫面錯誤都可以透過一些簡單的步驟來排除和處理。本文將為讀者介紹一些解決藍屏錯誤代碼0x0000001的方法。首先,當遇到藍色畫面錯誤時,我們可以嘗試重

Win11管理員權限取得詳解 Win11管理員權限取得詳解 Mar 08, 2024 pm 03:06 PM

Windows作業系統是全球最受歡迎的作業系統之一,其新版本Win11備受矚目。在Win11系統中,管理員權限的取得是一個重要的操作,管理員權限可以讓使用者對系統進行更多的操作和設定。本文將詳細介紹在Win11系統中如何取得管理員權限,以及如何有效地管理權限。在Win11系統中,管理員權限分為本機管理員和網域管理員兩種。本機管理員是指具有對本機電腦的完全管理權限

GE通用遠端程式碼可在任何裝置上編程 GE通用遠端程式碼可在任何裝置上編程 Mar 02, 2024 pm 01:58 PM

如果您需要遠端編程任何設備,這篇文章會為您帶來幫助。我們將分享編程任何設備的頂級GE通用遠端代碼。通用電氣的遙控器是什麼? GEUniversalRemote是一款遙控器,可用於控制多個設備,如智慧電視、LG、Vizio、索尼、藍光、DVD、DVR、Roku、AppleTV、串流媒體播放器等。 GEUniversal遙控器有各種型號,具有不同的功能和功能。 GEUniversalRemote最多可以控制四台設備。頂級通用遙控器代碼,可在任何裝置上編程GE遙控器配備一組代碼,使其能夠與不同設備配合。您可

解決代碼0xc000007b錯誤 解決代碼0xc000007b錯誤 Feb 18, 2024 pm 07:34 PM

終止代碼0xc000007b在使用電腦時,有時會遇到各種各樣的問題和錯誤代碼。其中,終止代碼最為令人困擾,尤其是終止代碼0xc000007b。這個程式碼表示某個應用程式無法正常啟動,給用戶帶來了不便。首先,我們來了解終止碼0xc000007b的意思。這個程式碼是Windows作業系統的錯誤代碼,通常發生在32位元應用程式嘗試在64位元作業系統上執行時。它表示應

Oracle SQL中的除法運算詳解 Oracle SQL中的除法運算詳解 Mar 10, 2024 am 09:51 AM

OracleSQL中的除法運算詳解在OracleSQL中,除法運算是一種常見且重要的數學運算運算,用來計算兩個數相除的結果。除法在資料庫查詢中經常用到,因此了解OracleSQL中的除法運算及其用法是資料庫開發人員必備的技能之一。本文將詳細討論OracleSQL中除法運算的相關知識,並提供具體的程式碼範例供讀者參考。一、OracleSQL中的除法運算

如何使用Copilot產生程式碼 如何使用Copilot產生程式碼 Mar 23, 2024 am 10:41 AM

身為一名程式設計師,對於能夠簡化程式設計體驗的工具,我感到非常興奮。借助人工智慧工具的幫助,我們可以產生演示程式碼,並根據需求進行必要的修改。在VisualStudioCode中新引入的Copilot工具讓我們能夠創建具有自然語言聊天互動的AI生成程式碼。透過解釋功能,我們可以更好地理解現有程式碼的含義。如何使用Copilot產生程式碼?要開始,我們首先需要取得最新的PowerPlatformTools擴充。要實現這一點,你需要進入擴充頁面,搜尋“PowerPlatformTool”,然後點擊Install按鈕

藍色畫面代碼0x000000d1代表什麼問題? 藍色畫面代碼0x000000d1代表什麼問題? Feb 18, 2024 pm 01:35 PM

0x000000d1藍屏程式碼是什麼意思近年來,隨著電腦的普及和網路的快速發展,作業系統的穩定性和安全性問題也日益凸顯。一個常見的問題是藍色畫面錯誤,代碼0x000000d1是其中之一。藍色畫面錯誤,或稱為“藍色畫面死機”,是當電腦遇到嚴重系統故障時發生的情況。當系統無法從錯誤中恢復時,Windows作業系統會顯示一個藍色的螢幕,並在螢幕上顯示錯誤代碼。這些錯誤代

linux系統呼叫system()函數詳解 linux系統呼叫system()函數詳解 Feb 22, 2024 pm 08:21 PM

Linux系統呼叫system()函數詳解系統呼叫是Linux作業系統中非常重要的一部分,它提供了一種與系統核心互動的方式。其中,system()函數是常用的系統呼叫函數之一。本文將詳細介紹system()函數的使用方法,並提供對應的程式碼範例。系統呼叫的基本概念系統呼叫是使用者程式與作業系統核心互動的一種方式。使用者程式透過呼叫系統呼叫函數來請求作業系統

See all articles