JavaScript 中 '/g' 標誌的重要性是什麼?


在深入瞭解 /g 標誌之前,讓我們先了解一下正則表示式。建立搜尋模式的一串字元稱為正則表示式。搜尋模式可以應用於文字替換和搜尋操作。正則表示式可以是一個簡單的單字母模式,也可以是一個更復雜的模式。可以使用正則表示式執行各種文字搜尋和替換操作。

建立 RegExp 物件的兩種方法是字面量表示法和建構函式。

  • 字面量表示法包含兩個斜槓之間的模式以及第二個斜槓後面的可選標誌。在 JavaScript 中,您使用花括號 {} 宣告物件。花括號 {} 是物件字面量語法,這意味著以這種方式編寫新物件被稱為構造物件字面量。每當正則表示式保持不變時,使用字面量表示法至關重要。例如,不建議在迴圈中使用字面量表示法。

  • 建構函式的第二個引數是一個可選標誌字串,它接受字串或 RegExp 物件作為第一個引數。使用建構函式允許程式設計師在 JavaScript 中編寫正則表示式。此方法接受正則表示式作為字串形式的函式引數。從 ECMAScript 6 開始,建構函式現在可以接受來自正則表示式的字面量。當編寫其模式在執行時會發生變化的正則表示式時,最好使用建構函式。

正則表示式有時可能需要多次匹配同一個字串。構建後,正則表示式物件必須設定 /g 標誌(無論是透過正則表示式字面量,還是透過建構函式 RegExp)。結果,正則表示式物件的 global 屬性為 true,這會導致許多操作的行為有所不同。

JavaScript 的 RegExp g 修飾符執行全域性匹配,它搜尋模式的所有例項,而不是在第一次匹配後終止。標誌是可以可選地新增到正則表示式以更改其搜尋方式的引數。單個小寫字母字元用於表示標誌。JavaScript 正則表示式中有六個標誌,每個標誌都有其特定功能。

我們可以使用代表“全域性”的標誌 g 強制它查詢模式的所有匹配項,而不僅僅是第一個匹配項。

語法

JavaScript RegExp g 的語法

/regexp/g

new RegExp("regexp", "g")

示例 1

在這個例子中,下面的表示式解析字串,刪除所有數字 [d],然後返回乾淨的字串。請記住,g 代表“全域性”,這意味著搜尋所有匹配項,而不僅僅是第一個匹配項。

<!DOCTYPE html> <html> <title>What is the importance of '/g' flag in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge><meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <script> let strName = "Tutorialspoint is an online learning platform!"; let regex = /[\d]/g; document.write(strName.replace(regex, "")); </script> </body> </html>

示例 2

在這個例子中,讓我們瞭解 match() 方法如何檢查字串與正則表示式的相容性或從字串中提取特定字串。如果沒有找到任何內容,則返回所有匹配項的陣列;否則返回 null。

<!DOCTYPE html> <html> <title>What is the importance of '/g' flag in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div id="result"></div> <script> let regularExp = /\d+/g; let strAge = "John: 42, Mike: 44"; document.getElementById("result").innerHTML =strAge.match(regularExp); </script> </body> </html>

示例 3

在這個例子中,讓我們瞭解 split() 方法如何使用正則表示式將字串分割成字串陣列。它使用正則表示式作為分隔符來分割字串。最終陣列中不包含分隔符本身。

<!DOCTYPE html> <html> <title>What is the importance of '/g' flag in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div id='result'></div> <script> let regularExp = /[,:.]/; let strAge = 'John:42, Mike:44.Michael:50'; document.getElementById('result').innerHTML =strAge.split(regularExp); </script> </body> </html>

示例 4

RegExp 的 exec() 方法檢查字串引數以檢視字串中是否存在正則表示式的模式一次或多次。如果找不到匹配項,則返回 null。如果找到匹配項,則它會生成一個數組,其中第一個元素是完整模式的第一個匹配字串。下面的例子展示瞭如何使用 exec()。

假設您想從網頁獲取真實的電子郵件地址(這稱為螢幕抓取)。JavaScript 允許您執行以下操作:

<!DOCTYPE html> <html> <title>What is the importance of '/g' flag in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <script> var webPage = "<html>tutorialspoint@@test.org, tutpoint@@email.com, incorrect-emailaddress</html>"; var regExp = /[0-9a-zA-Z]+@@[0-9a-zA-Z]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+/g; do { var emailAddress = regExp.exec(webPage); document.write(emailAddress[0]+"<br>"); } while (emailAddress.index < webPage.length); </script> </body> </html>

更新於:2022年8月4日

492 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.