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.