首頁 web前端 js教程 JS正規中的RegExp物件物件_javascript技巧

JS正規中的RegExp物件物件_javascript技巧

May 16, 2016 pm 05:48 PM
regexp 正規則

有兩種方式可以建立RegExp物件的實例。

使用RegExp的明確建構函數,語法為:new RegExp("pattern"[,"flags"])。
使用RegExp的隱式建構函數,採用純文字格式:/pattern/[flags]。

pattern部分為要使用的正規表示式模式文本,是必須的。在第一種方式中,pattern部分以JavaScript字串的形式存在,需要使用雙引號或單引號括起來;在第二種方式中,pattern部分嵌套在兩個「/」之間,不能使用引號。

flags部分設定正規表示式的標誌訊息,是可選項。如果設定flags部分,在第一種方式中,以字串的形式存在;在第二種方式中,以文字的形式緊接在最後一個「/」字元之後。 flags可以是以下標誌字元的組合。
g是全域標誌。如果設定了這個標誌,對某個文字執行搜尋和取代操作時,將對文字中所有符合的部分起作用。如果不設定這個標誌,則僅搜尋和取代最早匹配的內容。

i是忽略大小寫標誌。如果設定了這個標誌,進行配對比較時,將忽略大小寫。

m是多行標誌。如果不設定這個標誌,那麼元字元「^」只與整個被搜尋字串的起始位置相匹配,而元字元「$」只與被搜尋字串的結束位置相符。如果設定了這個標誌,「^」也可以與被搜尋字串中的「 ”或“ 」之後的位置(即下一行的行首)相匹配,而“$”還可以與被搜尋字串中的“ ”或“ 」之後的位置(即下一行的行尾)相符。

程式碼1.1是一個建立正規表示式的範例。
程式碼1.1 建立正規表示式:1.1.htm

複製程式碼 程式碼如下:






<title>建立正規表示式




上面程式碼的運行結果如圖8.1所示。正規表示式中的「」以「」取代。 🎜>
複製程式碼 程式碼如下:



由於正則表達式模式文本中的轉義字符也是“”,如果正則表達式中要匹配原義字符“”,在正則表達式模式文本中要以“”來表示,當使用顯式構造函數的方式建立RegExp實例物件的時候,就需要使用「\」來表示原義字元「」。
var re = new RegExp(\\)。

1 RegExp物件的屬性

RegExp物件的屬性分為靜態屬性和實例屬性。以下分別進行介紹。

1.1 靜態屬性
(1)index屬性。是目前表達式模式首次符合內容的開始位置,從0開始計數。其初始值為-1,每次成功匹配時,index屬性都會隨之改變。
(2)input屬性。傳回目前所作用的字串,可以簡寫為$_,初始值為空字串""。
(3)lastIndex屬性。是當前表達式模式首次匹配內容中最後一個字元的下一個位置,從0開始計數,常被作為繼續搜索時的起始位置,初始值為-1,表示從起始位置開始搜索,每次成功匹配時,lastIndex屬性值都會隨之改變。
(4)lastMatch屬性。是目前表達式模式的最後一個符合字串,可以簡寫為$&。其初始值為空字串""。在每次成功配對時,lastMatch屬性值都會隨之改變。
(5)lastParen屬性。如果表達式模式中有括起來的子匹配,是當前表達式模式中最後的子匹配所匹配到的子字串,可以簡寫為$ 。其初始值為空字串""。每次成功配對時,lastParen屬性值都會隨之改變。
(6)leftContext屬性。是目前表達式模式最後一個符合字串左邊的所有內容,可以簡寫為$`(其中「'」為鍵盤上「Esc」下邊的反單引號)。初始值為空字串""。每次成功匹配時,其屬性值都會隨之改變。
(7)rightContext屬性。是目前表達式模式最後一個符合字串右邊的所有內容,可以簡寫為$'。初始值為空字串""。每次成功匹配時,其屬性值都會隨之改變。
(8)$1…$9屬性。這些屬性是唯讀的。如果表達式模式中有括起來的子匹配,$1…$9屬性值分別是第1個到第9個子匹配所捕捉到的內容。如果有超過9個以上的子匹配,$1…$9屬性分別對應最後的9個子匹配。在一個表達式模式中,可以指定任意多個括號的子匹配,但RegExp物件只能儲存最後的9個子匹配的結果。在RegExp實例物件的一些方法所傳回的結果陣列中,可以得到所有圓括號內的子符合結果。

1.2 實例屬性

(1)global屬性。傳回建立RegExp物件實例時指定的global標誌(g)的狀態。如果在建立RegExp物件實例時設定了g標誌,則該屬性傳回True,否則傳回False,預設值為False。
(2)ignoreCase屬性。傳回建立RegExp物件實例時指定的ignoreCase標誌(i)的狀態。如果在建立RegExp物件實例時設定了i標誌,則該屬性傳回True,否則傳回False,預設值為False。
(3)multiLine屬性。傳回建立RegExp物件實例時指定的multiLine標誌(m)的狀態。如果建立RegExp物件實例時設定了m標誌,則此屬性傳回True,否則傳回False,預設值為False。
(4)source屬性。傳回建立RegExp物件實例時指定的表達式文字字串。

JS中的RegExp物件(二)

2 RegExp物件的方法
RegExp物件的常用方法有test、exec物件和compile,本節介紹這些方法的功能和用法。最後,對RegExp物件的屬性和方法進行一個綜合舉例。
2.1 test方法
語法格式為test(str)。此方法檢查字串中是否存在建立RegExp物件實例時所指定的表達式模式,如果存在就傳回True,否則傳回False。如果找到符合項,則會更新RegExp物件中的相關靜態屬性,以反映符合情況。
2.2 exec方法
語法格式為exec(str)。此方法使用建立RegExp物件實例時所指定的表達式模式對一個字串進行搜索,並傳回一個包含搜尋結果的陣列。
如果為正規表示式設定了全域標誌(g),可以透過多次呼叫exec和test方法在字串中進行連續搜索,每次都是從RegExp物件的lastIndex屬性值指定的位置開始搜尋字符串。
如果沒有設定全域標誌(g),則exec和test方法忽略RegExp物件的lastIndex屬性值,從字串的起始位置開始搜尋。
如果exec方法沒有找到匹配,則傳回值為null;如果找到匹配,則傳回一個數組,並更新RegExp物件中有關靜態屬性以反映匹配情況。傳回數組中的元素0包含了完整的匹配結果,而元素1~n依序是表達式模式中定義的各個子匹配的結果。
exec方法傳回的陣列有3個屬性,分別是input、index和lastIndex。
input屬性是整個被搜尋的字串。
index屬性是指匹配在整個被搜尋字串中的位置。
lastIndex屬性是指匹配的子字串的最後一個字元的下一個字元位置。
代碼2.1是對此方法的應用舉例。
程式碼2.1 exec()方法應用:2.1.htm
複製程式碼 程式碼如下:

複製程式碼🎜>


exec()方法應用




2.3 compile方法


語法格式為compile("pattern"[,"flags"])。此方法可以更換RegExp物件實例所使用的表達式模式,並將新的表達式模式編譯為內部格式,從而使以後的匹配過程執行更快。如果要在迴圈中重複使用某個表達式,對其進行編譯將使執行加速。但是,如果在程式中使用了任何其他表達式模式後,再使用原來編譯過的表達式模式,則這種編譯毫無 益處。

2.4 綜合舉例


代碼2.2是對RegExp對象的綜合舉例,認真分析代碼及其運行結果,可以更好地理解RegExp對象。
程式碼2.2 RegExp物件的使用:2.2.htm 程式碼如下:


程式碼如下:
}
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何用php正規取代以什麼開頭的字串 如何用php正規取代以什麼開頭的字串 Mar 24, 2023 pm 02:57 PM

PHP正規表示式是一種針對文字處理和轉換的強大工具。它可以透過解析文字內容,並依照特定的模式進行替換或截取,達到有效管理文字資訊的目的。其中,正規表示式的一個常見應用是替換以特定字元開頭的字串,對此,我們進行如下的講解

如何用 Golang 正規匹配多個單字或字串? 如何用 Golang 正規匹配多個單字或字串? May 31, 2024 am 10:32 AM

Golang正規表示式使用管道符|來匹配多個單字或字串,將各個選項作為邏輯OR表達式分隔開來。例如:匹配"fox"或"dog":fox|dog匹配"quick"、"brown"或"lazy":(quick|brown|lazy)匹配"Go"、"Python"或"Java":Go|Python |Java匹配字或4位郵遞區號:([a-zA

php 如何用正規去除中文 php 如何用正規去除中文 Mar 03, 2023 am 10:12 AM

php用正規去除中文的方法:1、建立一個php範例檔;2、定義一個含有中文和英文的字串;3、透過「preg_replace('/([\x80-\xff]*)/i', '',$a);」正規方法去除查詢結果中的中文字元即可。

php怎麼利用正規匹配去掉html標籤 php怎麼利用正規匹配去掉html標籤 Mar 21, 2023 pm 05:17 PM

在本文中,我們將學習如何使用PHP正規表示式刪除HTML標籤,並從HTML字串中提取純文字內容。為了示範如何去除HTML標記,讓我們先定義一個包含HTML標籤的字串。

MySQL的REGEXP和LIKE有什麼差別 MySQL的REGEXP和LIKE有什麼差別 May 30, 2023 pm 01:58 PM

1.在匹配內容上的區別LIKE要求整個資料都要匹配,用Like,必須這個字段的所有內容滿足條件;REGEXP只需要部分匹配即可,只需要有任何一個片段滿足即可。 2.在匹配位置上的區別LIKE匹配整個列,如果被匹配的文字在列值中出現,LIKE將不會找到它,相應的行也不會被返回(除非使用通配符);REGEXP在列值內進行匹配,如果被匹配的文字在列值中出現,REGEXP將會找到它,則相應的行將被傳回,並且REGEXP能匹配整個列值(與LIKE相同的作用)。 3.SQL語句回傳資料區別LIKE匹配:此SQL語

使用PHP正規實現中文取代功能的技巧分享 使用PHP正規實現中文取代功能的技巧分享 Mar 24, 2024 pm 05:57 PM

使用PHP正規實現中文替換功能的技巧分享在web開發中,經常會遇到需要對中文內容進行替換的情況。 PHP作為一種流行的伺服器端腳本語言,提供了強大的正規表示式功能,可以輕鬆實現中文替換。本文將分享一些在PHP中使用正規實現中文替換的技巧,同時提供具體的程式碼範例。 1.使用preg_replace函數實作中文替換PHP中的preg_replace函數可以用來

如何使用PHP正規表示式驗證URL是否為HTTPS協議 如何使用PHP正規表示式驗證URL是否為HTTPS協議 Jun 24, 2023 am 08:16 AM

網站安全性越來越受到關注,使用HTTPS協議保證資料傳輸的安全性已成為目前網站開發的重要內容。在PHP開發中,如何使用正規表示式驗證URL是否為HTTPS協定呢?下面我們就來了解一下。正規表示式正規表示式是一種用來描述規律的表達式,是處理文字的強大工具,被廣泛應用於文字匹配、搜尋和替換等方面。在PHP開發中,我們可以透過正規表示式來匹配URL中的http

Go語文檔解讀:regexp.FindAllString函數詳解 Go語文檔解讀:regexp.FindAllString函數詳解 Nov 04, 2023 pm 02:32 PM

Go語言文檔解讀:regexp.FindAllString函數詳解正規表示式在文字處理中扮演重要的角色。 Go語言提供了regexp套件來支援正規表示式操作。其中,regexp.FindAllString函數具有重要的功能,本文將詳細解讀該函數的用法及其對應的程式碼範例。 regexp.FindAllString函數的作用是在提供的字串中搜尋並傳回所有與正規表達

See all articles