下面是关于“javascript学习笔记(十二) RegExp类型介绍”的完整攻略。
RegExp类型介绍
RegExp类型是JS语言中表示正则表达式的类型。正则表达式是一种用于模式匹配的工具,可以用来匹配字符串中的文本模式,在字符串的搜索、替换、切割等操作中特别方便。
创建RegExp实例
创建RegExp实例的两种方式:
- 字面量方式
javascript
var regExp = /test/i;
这里的 /
是一个分隔符,它表示接下来的是正则表达式的内容,i
是一个修饰符,表示匹配时忽略大小写。
- 构造函数方式
javascript
var regExp = new RegExp("test", "i");
这里的第一个参数是正则表达式的内容,第二个参数是修饰符。注意,这里的正则表达式字符串中需要使用双反斜杠(\)对一些特殊字符进行转义,例如 \\d
表示匹配数字,而 \d
会直接被解释为字母 "d"。
正则表达式的方法
RegExp类型提供了一系列用于操作正则表达式的方法,这里只列举一些常用的方法:
- test():测试字符串是否匹配正则表达式。
- exec():函数用来检索字符串中与正则表达式匹配的值。
其中,test()
方法返回一个布尔值,表示是否匹配成功;exec()
方法返回一个数组,第一个元素是匹配到的结果,后面的元素是分组捕获的结果。
举个例子,下面将使用正则表达式匹配一个字符串:
var str = "Hello, World!";
var regExp = /o/g;
console.log(regExp.test(str)); // true
console.log(regExp.exec(str)); // ["o", index: 4, input: "Hello, World!", groups: undefined]
console.log(regExp.exec(str)); // ["o", index: 7, input: "Hello, World!", groups: undefined]
这里匹配的正则表达式是 /o/g
,它表示匹配所有的字母 "o"。第一次执行exec()
方法时,返回的是字符串中的第一个字母 "o",第二个执行时,返回的是字符串中的第二个字母 "o"。
在使用exec函数时,我们可以通过分组来捕获匹配到的值。例如:
var str = "Hello, 123!";
var regExp = /^Hello,\s(\d+)$/ig;
var res = regExp.exec(str);
if (res) {
console.log(res[0]); // 匹配到的整个字符串 "Hello, 123!"
console.log(res[1]); // 分组中捕获的数字 123
}
这里的正则表达式是 /^Hello,\s(\d+)$/ig
,表示匹配以 "Hello," 开头,然后是一个或多个空格,最后是一个或多个数字,全局匹配,忽略大小写。捕获的内容是正则表达式中的一个分组 (\d+)
。
正则表达式的规则
正则表达式中包含很多特殊字符和规则,下面列举一些常用的:
- 字符类
[abc]
表示匹配单个字符 a、b 或 c。
[^abc]
表示匹配单个字符,但不能是 a、b 或 c。
- 字符范围
[a-z]
表示匹配单个小写字母。
[A-Z]
表示匹配单个大写字母。
[0-9]
表示匹配单个数字。
- 数量限定符
*
表示匹配前面的模式零次或多次。
+
表示匹配前面的模式一次或多次。
?
表示匹配前面的模式零次或一次。
{n}
表示匹配前面的模式恰好 n 次。
{n,}
表示匹配前面的模式至少 n 次。
{n,m}
表示匹配前面的模式至少 n 次,但不超过 m 次。
- 边界匹配
^
表示匹配字符串的开头。
$
表示匹配字符串的结尾。
\b
表示匹配一个单词边界。
- 特殊字符
.
表示匹配除换行符以外的任意一个字符。
\d
表示匹配数字。
\D
表示匹配非数字。
\s
表示匹配任意空白字符,包括空格、制表符、换行符等。
\S
表示匹配非空白字符。
\w
表示匹配单词字符,包括字母、数字、下划线。
\W
表示匹配非单词字符。
使用正则表达式的示例
- 匹配邮政编码
邮政编码是6位数字,可以使用正则表达式进行匹配:
javascript
var postCode = "610000";
var regExp = /^\d{6}$/;
console.log(regExp.test(postCode)); // true
这里的正则表达式是 /^\d{6}$/
,表示匹配6位数字,开头和结尾不能有其他字符。
- 匹配邮箱地址
邮箱地址包括用户名和域名两部分,它们之间用@符号隔开,可以使用正则表达式进行匹配:
javascript
var email = "test@example.com";
var regExp = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
console.log(regExp.test(email)); // true
这里的正则表达式是 /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
,表示匹配符合邮箱地址格式的字符串,包括用户名和域名两部分,其中用户名部分可以包括字母、数字、下划线、点、加号、减号和百分号,域名部分可以包括字母、数字、点和减号,后缀部分最少需要2个字母。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript学习笔记(十二) RegExp类型介绍 - Python技术站