正则表达式:是对字符串进行匹配运算的内置对象
表达式: 运算的
正则表达式:对字符串进行匹配运算
正则表达式作用:格式校验
手机号格式,验证码格式,账号密码,邮箱格式
正则表示式语法:
(1)创建正则对象:let reg = new RegExp(‘正则表达式’)
简写:const 变量名 = /表达式/
比如:const reg = /前端/
(2)调用对象的 test()方法 语法:reg.text('字符串')
判断是否有符合规则的字符串: 变量名.test(被检测的字符串)
true:校验通过 false:校验不通过
js中几乎所有的对象都是new创建的,其中有三个内置对象有简写语法
new Array() 简写 []
new object() 简写 {}
new Date() 简写
new RegExp() 简写 /正则表达式/
正则表达式语法由两部分组成 /正则表达式/
1.原义文本字符 : 字符串本身的含义
* PS : 别多想,写什么就是什么。想的越多,错的越离谱
例子:
2.元字符 : 改变了字符串本身的含义, 类似于js中的关键字
[ ] {} () . \ + ? * ^ $ |
[ ] : 字符类
1. /abc/ : 原义文本字符。 检测字符串有没有 abc
2. /[abc]/ : 字符类。 将a 或 b 或 c归为一类,满足任意一个即可.
说人话: 检测字符串中有没有 a 或 b 或 c
3. /[^abc]/ : 反向类。 将不是a 或 不是b 或 不是c的归为一类,满足任意一个即可。
说人话: 检测字符串中有没有除 abc之外的任意字符
例子:![watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm6L-q4oCUMA==,size_20,color_FFFFFF,t_70,g_se,x_16](https://img-blog.csdnimg.cn/b73faf8b4a764cc3a50c6e2d619e15cb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm6L-q4oCUMA==,size_20,color_FFFFFF,t_70,g_se,x_16)
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] | 非单词字符 |
例子:常用 / \d/ /\w/
边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符
如果 ^ 和 $ 在一起,表示必须是精确匹配。
边界符 | 说明 |
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本(以谁开始) |
1.开头边界: /^abc/
正确含义: 检测 以a开头 + bc的字符串 (^只对a检测)
错误含义: 检测 以abc开头的字符串 (^把abc当做整体)
2.结尾边界: /abc$/
正确含义 : ab + 以c结尾的字符串 ($只对c检测)
错误含义: 以abc结尾 ($把abc当做整体)
3.严格匹配: 开头边界与结尾边界同时使用
/^abc$/ : 只有唯一答案 ,就是abc本身
正确含义 : 以a开头 + b + 以c结尾 (^检测a开头, $检测c结尾)
错误含义 : 以abc开头,以abc结尾
量词 (表示重复次数)
量词用来 设定某个模式出现的次数 注意: 逗号左右两侧千万不要出现空格
量词 | 说明 |
* | 重复零次或者更多次 |
+ | 重复一次或者更多次 |
? | 重复零次或者一次 |
{n} | 重复n次 |
{n,} | 重复n次或者更多次 |
{n,m} | 重复n到m次 |
分组() 在正则中有两种含义
1.分组 : 把多个字符归为一组,用于量词
需求:检测字符串出现三次 love
错误写法 :/love{3}/ 检测 l+o+v+e{3次}
正确写法: /(love){3}/ 检测 (love)出现三次
2.提升优先级 : 让 | 只匹配小括号内部的字符,提升|的优先级
需求:检测字符串 出现 love 或 live
错误写法:/lo|ive/ 检测 lo 或 ive
正确写法:/l(o|i)ve/ 检测 l + o 或 i + ve
修饰符 : 对正则表达式起到修饰的作用
g : global,全局匹配
i : intensity, 不区分大小写
修饰符语法: /正则表达式/修饰符
* new RegExp('正则','修饰符')
例子:
正则表达式总结:
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+)?$/
替换:replace
语法:字符串.replace(/正则表达式 ,'替换的文字')
编程思想:解决同类问题的 固定思路
求和思想: 求累加和
擂台思想: 求最大值和最小值
排他思想:多个元素只能选中一个
开关思想:判读数组中是否所有的元素都满足条件
全选框:每一个选择框都要选中
非空判断:每一个输入框都要输入文本
开关思想例子:![watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm6L-q4oCUMA==,size_20,color_FFFFFF,t_70,g_se,x_16](https://img-blog.csdnimg.cn/3d0d0494441b4e3eb87fa4d0e684e969.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm6L-q4oCUMA==,size_20,color_FFFFFF,t_70,g_se,x_16)