正则表达式的使用
在一个字符串中寻找目标字符串是否存在,常用的简单的方法有includes或者indexof;
var reg = "room";
var str = "classroom";
var isExist;
// method1
isExist = str.includes(reg);
// method2
isExist = str.indexOf(reg) > -1;
如果寻找一类字符串,就需要使用一个匹配模型或者匹配公式,那么,这个模型或公式就是正则表达式。
var reg = /room/;
var str = "classroom";
var isExist;
// method1
isExist = str.match(reg);
// method2
isExist = reg.test(str);
// 其他可以用到正则表达式的方法有: exec、matchAll、search、replace、split等
一、创建表达式的两种方式
- 表达式字面量
var reg = /room/;
- 构造函数
var reg = new RegExp("room");
二、正则表达式的分类
- 由简单字符组成
var reg = /a/; // 匹配到的是第一个a
var str = "I am a student!";
var isExist = str.match(reg);
- 由普通字符和带有功能含义的特殊字符组成
var reg = /\ba\b/; // 匹配到的是前后都是词边界的第二个a
var str = "I am a student!";
var isExist = str.match(reg);
三、正则表达式特殊字符功能分类
1、断言
- 开头断言:^
- 结束断言:$
- 单词边界断言:\b
- 非单词边界断言:\B
- 向前断言:x(?=y)
- 向前否定断言:x(?!y)
- 向后断言:(?<=y)x
- 向后否定断言:(?<!y)x
2、字符类
- 数字:\d
- 非数字:\D
- 任何字母数字字符,包括下划线_:\w,相当[A-Za-z0-9_]
- 非字母数字字符和下划线:\W
- 其他:.、\s、\S、\t、\r、\n等
3、组合范围
- 匹配任意字符:x|y
- 字符集:[xyz] 或 [a-c]
- 一个否定的字符集:[^xyz] 或 [^a-c]
- 捕获组:(x)
4、量词
- x*:0次或多次
- x+:1次或多次
- x?:0次或一次
- x{n}:n次
- x{n,}:至少n次
- x{n,m}:最少n次,最多m次
四、正则表达式的可选参数
- g:全局搜索
- i:不区分大小写
- m:多行搜索
- s:允许.匹配换行符
- u:使用unicode码匹配
五、正则表达式使用demo
// 电话号码:/1[3458]\d{9}/
// qq邮箱:/[1-9]\d{5,}@qq\.com/