正则表达式介绍
1.正则表达式(Regular expression)是什么 : 对字符串进行逻辑匹配运算的 内置对象
表达式 : 对字符串进行运算
2.正则表达式作用 : 字符串格式校验
对字符串进行逻辑匹配运算
3.正则表达式使用流程 :
(1)创建正则对象 : let reg = new RegExp('正则')
(2)调用正则对象的test方法: reg.test('需要校验的字符串')
true : 校验通过
false : 校验不通过
(3)正则表达式可以直接写: /正则表达式/
正则表达式组成的两大部分
1.原义文本字符 : 字符串本身的含义
PS : 别多想,写什么就是什么。想的越多,错的越离谱
2.元字符 : 改变了字符串本身的含义, 类似于js中的关键字
[] () {} $ ^ * | + ? .
字符类 []
/abc/ : 原义文本字符。 检测字符串有没有 abc
/[abc]/ : 字符类。 将a 或 b 或 c归为一类,满足任意一个即可.
检测字符串中有没有 a 或 b 或 c
/[^abc]/ : 反向类。 将不是a 或 不是b 或 不是c的归为一类,满足任意一个即可。
检测字符串中有没有除 abc 之外的任意字符
console.log(/[^a]/.test('asdfghjkl1'))
console.log(/[a]/.test('sdfghjkl1'))
范围类
1.范围类
/[0-9]/ : 检测有没有数字
/[a-z]/ : 检测有没有小写字母
/[A-Z]/ : 检测有没有大写字母
2.范围类特点
2.1 范围类是一个闭区间 : /[5-8]/ : 包含5,也包含8
2.2 范围类可以连写: /[0-9a-zA-Z]/ : 大小写字母+数字
2.3 范围类一定是 右边 > 左边 (依据ASCII码)
[5-8] : 正确
[8-5] : 报错
预定义类
预定义类: 正则表达式提供好的用来匹配常见的字符类
预定义类 等价类 含义
. [^\r\n] 除了回车和换行之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s [\f\n\r\t\v] 空白字符
\S [^\f\n\r\t\v] 非空白字符
\w [a-zA-Z_0-9] 单词字符(字母、下划线、数字)
\W [^a-zA-Z_0-9] 非单词字符
边界
边界
1.开头边界: /^abc/
正确含义: 检测 以a开头 + bc的字符串 (^只对a检测)
错误含义: 检测 以abc开头的字符串 (^把abc当做整体)
结尾边界: /abc$/
正确含义 : ab + 以c结尾的字符串 ($只对c检测)
错误含义: 以abc结尾 ($把abc当做整体)
严格匹配: 开头边界与结尾边界同时使用
/^abc$/ : 只有唯一答案 ,就是abc本身
正确含义 : 以a开头 + b + 以c结尾 (^检测a开头, $检测c结尾)
错误含义 : 以abc开头,以abc结尾
量词
量词作用: 检测字符出现的次数
? 出现零次或一次(最多出现一次 <=1)
+ 出现一次或多次(至少出现一次 >=1)
* 出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n-m次
{n,} 出现至少n次(>=n)
console.log('123456789521'.replace(/\d?/, 'X'))
console.log('123456789521'.replace(/\d+/, 'X'))
console.log('a123456789521'.replace(/\d*/, 'X'))
console.log('123g456789521'.replace(/\d*/, 'X'))
console.log('123g456789521'.replace(/\d{4,6}/, 'X'))
console.log('123g456789521'.replace(/\d{8,10}/, 'X'))
分组
() 在正则中有两种含义
1.分组 : 把多个字符归为一组,用于量词
2.提升优先级 : 让 | 只匹配小括号内部的字符,提升|的优先级
console.log(/te(s|x)t/.test('test'))
console.log(/te(s|x)t/.test('text'))
修饰符
修饰符 : 对正则表达式起到修饰的作用
g : global,全局匹配
i : intensity, 不区分大小写
console.log('bbbaaacccBBBB'.replace(/b/i, '小吴'))
console.log('bbbaaacccBBBB'.replace(/b/ig, '小吴'))
console.log('bbbaaacccBBBB'.replace(/b/g, '小吴'))
常用的正则表达式
1.手机号正则
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
2.验证码
/^\d{6}$/
3.账号密码 6-20位: 大小写字母, 下划线_
/^\w{6,20}$/
4.邮箱
/^\w+[@]\w+\.\w+(\.\w+)?$/