常用的几个正则表达式
/*
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+)?$/
*/
下面和大家详细的说一说什么是正则表达式
# 什么叫正则表达式?
````` 对字符串进行匹配运算的内置对象
- 表达式 : 对字符串进行逻辑匹配运算
- 内置对象 : js语言提供好的内置对象,存储一些对字符串进行匹配运算的方法。
# 正则表达式的作用?
````` 对字符串进行逻辑匹配运算(格式校验)
# 正则表达式的流程介绍
(1)声明正则对象 : let reg = new RegExp( /正则表达式/ )
(2)调用对象test方法 : reg.test( '要校验的字符串' ) 简写 /正则/
true : 符合规则
false : 不符合规则
# 正则表达式语法两部分组成 (原义符 和元字符 (7 类))
- 原义符 : 就是字符串本身的含义
- 元字符 : 改变了字符串本身的含义 ( [] {} () * $ ^ . + \ | ? )
[ ] : 字符类 将某种特征的字符归为一类。
/[abc]/ : 将a 或 b 或 c这种字符归为一类. * 说人话 : 检测字符串有没有a 或 b 或 c
[^] : 反向类 将不是某种特征的字符归为一类。
/[^abc]/ : 将不是a 或 不是b 或 不是c的字符归为一类. * 说人话 : 检测字符串有没有 不是a 或 b 或 c的字符
范围类 : 代表字符类的范围
/[0-9]/ : 检测有没有数字字符 /[a-z]/ : 检测有没有小写字母 /[A-Z]/ : 检测有没有大写字母
注意点 (1)范围类可以连写 /[a-zA-Z0-9]/ : 检测字符串有没有字母或数字
(2)范围类是一个闭区间 /[5-8]/ : 检测有没有5-8之间的数据。 包含5和8
(3)范围类 右边 一定大于 左边 /[8-5]/ : 直接报错。 范围类一定是右边大于左边
/[8-90-5]/ : 可以的 。 包含8 9 0 1 2 3 4 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] 非单词字符
边界类:正则表达式提供了几个常用的边界匹配字符
边界字符 含义
^ 以xxxx开头
$ 以xxxx结束
\b 单词边界
\B 非单词边界
量词 量词的作用:检查字符串出现的次数
? 出现零次或一次(最多出现一次 <=1)
* 出现零次或多次(任意次)
+ 出现一次或多次(至少出现一次 >=1)
{n} 出现n次
{n,m} 出现n到m次
{n,}
() 在正则中有三种含义
1.分组 : 把多个字符归为一组,用于量词
2.提升优先级 : 让 | 只匹配小括号内部的字符,提升|的优先级
3.反向引用(提取) : 正则会提取()内部匹配的数据存入$中,可以进行反向引用
修饰符 : 对正则表达式进行修饰作用,可以改变正则表达式结果
g : global,全局匹配
i : intensity,区分大小写
m : multiple,检测换行符。用于边界
2.修饰符语法: /正则表达式/修饰符
//1. g : 全局匹配
// /a/ : 匹配字符a
//(1)默认情况下,正则只能匹配第一个
console.log('a123456789a'.replace(/a/, 'X')) //X123456789a
//(2)如果希望正则可以匹配所有的,就可以使用 g修饰符
console.log('a123456789a'.replace(/a/g, 'X')) //X123456789X
//2. i : 不区分大小写
//(1)默认情况下,正则表达式区分大小写
console.log('a123456789A'.replace(/a/, 'X')) //X123456789A
//(2)如果希望正则不区分大小写,就可以使用 i修饰符
console.log('Aa123456789A'.replace(/a/i, 'X')) //Xa123456789A
/* 正则表达式修饰符是可以同时写多个的 */
console.log('Aa123456789A'.replace(/a/ig, 'X')) //XX123456789X
//3. m : 检测换行符。 需要和边界在一起使用
//m含义: 让边界 对换行符生效。 换行符后面的内容视为边界
let str = '我爱我的维他\n我爱我的维他\n我爱我的维他'
console.log(str.replace(/^我/gm, '王悦'))
console.log(str.replace(/(.+)我(.+)/gm, '$1王悦$2')) //替换中间的我
你学会了吗?