ES6 中的 RegExp 解释?
ES6 是 2015 年发布的最新 JavaScript 版本。我们将学习 RegExp(即正则表达式)的所有功能,这些功能包含在 Es6 中。
什么是正则表达式以及它的用法
正则表达式是一个表示特定搜索模式的字符串,包含不同的字符,例如数字、字母和特殊字符。
让我们了解正则表达式的实时用法。
我们希望大家过去都填写过一些表单,并且见过一些特定的表单字段验证错误。例如,如果您未输入包含“@”字符的电子邮件或输入了非 10 位数的手机号码,则会显示错误。因此,我们可以使用正则表达式进行表单字段输入验证。
此外,我们还可以使用正则表达式在字符串中查找特定子字符串,并将其替换为新字符串。
正则表达式可用于密码验证,以确保密码强度。
正则表达式还有很多其他用途,如上所述。
语法
我们可以使用以下两种不同的方式定义正则表达式。
字面量表示法 - 用户需要在两个正斜杠之间定义搜索模式,以将搜索模式表示为正则表达式。
myImage.style.display = "block";
构造函数 - 我们可以使用带有 new 关键字的 RegExp() 构造函数来定义正则表达式对象。用户可以按照以下语法使用构造函数定义正则表达式。
var pattern = new RegExp(search_pattern, attributes);
属性
我们可以使用以下多个属性的组合。
属性 |
描述 |
---|---|
G |
用于字符串中的全局匹配。 |
I |
忽略字符串中的大小写。 |
M |
用于多行匹配。 |
U |
U 代表 Unicode,它允许将 RegExp 视为 Unicode 代码点的序列。 |
Y |
用于从最后一个索引开始匹配。 |
构建正则表达式
我们可以使用不同的特殊字符来构建正则表达式,我们将在下面的示例中了解这些字符。
方括号
我们可以使用方括号在正则表达式模式中定义字符范围。
方括号表示法 |
描述 |
---|---|
[abc…] |
在搜索字符串中搜索方括号中的任何单个字符。 |
[^abc…] |
搜索不在方括号中的任何单个字符。 |
[D−L] |
搜索 D 和 L 之间的任何单个大写字符。 |
[d−l] |
搜索 D 和 L 之间的任何单个小写字符。 |
[0−9] |
搜索 0 和 9 之间的任何单个数字。 |
示例 1
在此示例中,我们使用修饰符“g”和方括号表示法创建了一个模式,并将该模式与消息字符串进行了匹配。您可以观察到它只从 JavaScript 中返回“Script”,因为我们没有使用“I”修饰符忽略大小写。
<html> <body> <h2> Using the bracket notations in the regular expression </h2> <p id="output"> </p> </body> <script> let output = document.getElementById("output"); let message ="TutorialsPoint is a great website to learn JavaScript and Typescript."; // defining the regular expression pattern var pattern = new RegExp("Script", "g"); // matching the pattern in string var script_match1 = message.match(pattern); output.innerHTML += "All matches without case ignorance: " + script_match1 + "<br/>"; </script> </html>
示例 2
在此示例中,我们找到所有不区分大小写的匹配项。您可以观察到我们使用“I”修饰符忽略了大小写。
<html> <body> <h2> Using the bracket notations in the regular expression </h2> <p id="output"> </p> </body> <script> let output = document.getElementById("output"); let message ="TutorialsPoint is a great website to learn JavaScript and Typescript."; // Matching with case ignorance pattern = new RegExp("Script", "gi"); script_match1 = message.match(pattern); output.innerHTML += "All matches with case ignorance:" + script_match1 + "<br/>"; </script> </html>
示例 3
在此示例中,我们匹配“a”和“c”之间的字符。
<html> <body> <h2> Using the bracket notations in the regular expression </h2> <p id="output"> </p> </body> <script> let output = document.getElementById("output"); let message ="TutorialsPoint is a great website to learn JavaScript and Typescript."; // matching from a particular range pattern = new RegExp("[a-c]", "g"); script_match1 = message.match(pattern); output.innerHTML += "All matches between a to c: " + script_match1 + "<br/>"; </script> </html>
量词
我们可以使用量词来匹配给定字符串中特定数量的字符。我们可以使用不同的特殊字符来创建不同类型的量词。
量词 |
描述 |
---|---|
C+ |
搜索包含一个或多个 C 的字符串。 |
C* |
搜索包含零个或多个 C 的字符串。 |
C{M} |
搜索包含正好 M 个 C 的字符串。 |
C{M, N} |
搜索包含 M 和 N 之间总数为 C 的字符串。 |
C{M, } |
搜索包含至少 M 个 C 的字符串。 |
C$ |
搜索以 C 结尾的字符串。 |
^C |
搜索以 C 开头的字符串。 |
示例
在此示例中,我们在创建正则表达式时使用了不同的量词,并将消息字符串与正则表达式模式进行了匹配。
<html> <body> <h2> Using the <i> Quantifiers </i> in the regular expression </h2> <p id="output"> </p> </body> <script> let output = document.getElementById("output"); let message = "TutorialsPoint is a great website to learn JavaScript and Typescript."; // defining the regular expression pattern var pattern = new RegExp("a+", "g"); // matching the pattern in string var script_match1 = message.match(pattern); output.innerHTML += "All matches which contain at least one a: " + script_match1 + "<br/>"; // Matching with case ignorance pattern = new RegExp("^t", "gi"); script_match1 = message.match(pattern); output.innerHTML += "All matches which starts with t: " + script_match1 + "<br/>"; </script> </html>
字面量字符
字面量字符 我们可以使用字面量字符来表示正则表达式中的转义字符。
字面量 |
描述 |
---|---|
\0 |
表示 NULL 字符。 |
\t |
表示制表符 |
\n |
|
表示换行符。 |
\v |
表示垂直制表符。 |
\r |
示例
用于使用十六进制数 xxxx 指定 Unicode 字符 u。
<html> <body> <h2> Using the <i> Literal characters </i> in the regular expression </h2> <p id="output"></p> </body> <script> let output = document.getElementById("output"); let message = "TutorialsPoint is a great website to learn JavaScript and Typescript."; // defining the regular expression pattern var pattern = new RegExp("\T", "g"); // matching the pattern in string var script_match1 = message.replace(pattern, "\p"); output.innerHTML += "After replacing the T in the string with p is : <br>" + script_match1 + "<br/>"; </script> </html>
在此示例中,我们使用了“\t”字面量来转义制表符,并将消息字符串中的所有“T”字符替换为“p”。
元字符 |
描述 |
---|---|
元字符 |
\s |
指定空格。 |
\S |
指定非空格。 |
\w |
指定单词字符。 |
\W |
指定非单词字符。 |
\d |
指定十进制数字。 |
\D |
指定非十进制数字。