JavaScript 中 '/g' 标志的重要性是什么?
在了解 /g 标志之前,让我们先了解一下正则表达式。创建搜索模式的字符串称为正则表达式。搜索模式可应用于文本替换和搜索操作。正则表达式可能是一个带有一个字母的简单模式,也可能是一个更复杂的模式。各种文本搜索和替换操作都可以使用正则表达式执行。
文字符号和构造函数是创建 RegExp 对象的两种方法。
文字符号由两个斜杠之间的模式和第二个斜杠以外的可选标志组成。在 JavaScript 中,使用花括号{} 声明对象。花括号{} 是对象文字语法,这意味着以这种方式写出新对象称为构造对象文字。每当正则表达式保持不变时,使用文字符号就至关重要。例如,不建议在循环中使用文字符号。
可选标志字符串是构造函数的第二个参数,否则它将接受字符串或 RegExp 对象作为其第一个参数。使用构造函数允许程序员在 JavaScript 中编写正则表达式。此方法以字符串的形式接受正则表达式作为函数参数。从 ECMAScript 6 开始,构造函数现在可以接受正则表达式中的文字。在编写正则表达式时,如果其模式在执行时会发生变化,最好使用构造函数。
正则表达式有时可能需要多次匹配相同的字符串。构造后,正则表达式对象必须设置 /g 标志(无论是通过正则表达式文字,还是通过构造函数 RegExp)。因此,正则表达式对象的全局属性为真,这会导致许多操作的行为不同。
JavaScript 的 RegExp g 修饰符不会在第一次匹配后终止,而是执行全局匹配,搜索模式的所有实例。标志是一个参数,可以选择性地添加到正则表达式中,以改变其搜索方式。单个小写字母字符用于表示标志。 JavaScript 正则表达式中有六个标志,每个标志都有特定的功能。
我们可以使用标志 g(代表"全局")强制它发现模式的所有匹配项,而不仅仅是第一个匹配项。
语法
RegExp g 的 JavaScript 语法
/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>