正则量词 属性方法 使用技巧

n+

{1,正无穷}
\w 0-9A-z_

      var reg = /\w+/g;
      var str = 'abcdefg';

在这里插入图片描述正则匹配的两个原则
1.不会回头 匹配成功的就不会在匹配
2.贪婪模式 能匹配多就不会匹配少

n*

{0,正无穷}
\w 0-9A-z_

      var reg = /\w*/g;
      var str = 'abcdefg';

在这里插入图片描述
\d 0-9

      var reg = /\d*/g;
      var str = 'abcdefg';

在这里插入图片描述## n?
{0,1}

      var reg = /\w?/g;
      var str = 'abcdefg';

在这里插入图片描述

{x,y}

注意 这里2前面有一个空格 所以匹配不到

      var reg = /\w{1, 2}/g;
      var str = 'abcdefg';

在这里插入图片描述

      var reg = /\w{1,2}/g;
      var str = 'abcdefg';

在这里插入图片描述
{1,正无穷} === n+

{0,正无穷} === n*

{0,1} === n?

      var reg = /\w{5,}/g;
      var str = 'abcdefg';

在这里插入图片描述

^n

匹配任何以n开头的字符串

      var reg = /^ab/g;
      var str = 'abcdabcd';

在这里插入图片描述

n$

匹配任何以n结尾的字符串

      var reg = /cd$/g;
      var str = 'abcdabcd';

在这里插入图片描述
检查字符串是否abcd开头以abcd结尾
这样是找不到的
这样是匹配以abcd开头并且以这个abcd结尾 只能找到字符串abcd

      var reg = /^abcd$/g;
      var str = 'abcd123123abcd';

在这里插入图片描述
所以要这样写

      var reg = /^abcd[\s\S]*abcd$/g;
      var str = 'abcd123123abcd';

或者

      var reg = /^abcd.*abcd$/g;
      var str = 'abcd123123abcd';

在这里插入图片描述满足以abcd开头或以abcd结尾的字符串

      var reg = /^abcd|abcd$/g;
      var str = 'abcd123123abcd';

在这里插入图片描述检查字符串是否以abcd开头和以abcd结尾 并且开头结尾之间是数字

      var reg = /^abcd\d+abcd$/g;
      var str = 'abcd123123abcd';

在这里插入图片描述
匹配以138开头的手机号

      var reg = /^138\d{8}$/g;
      var str = '13812345678';

在这里插入图片描述

?=n

匹配任何其后紧接着指定字符串n的字符串
这样是不行的

      var reg = /a?=b/g;
      var str = 'abcdabcd';

在这里插入图片描述
要有括号

      var reg = /a(?=b)/g;
      var str = 'abcdabcd';

在这里插入图片描述

?!n

匹配任何其后没有紧跟着n的字符串

      var reg = /a(?!b)/g;
      var str = 'abcdascd';

在这里插入图片描述

子表达式 反向引用

可以用来获取到xxxx xxyy
括号括起来的是子表达式 \n表示反向引用第几个子表达式
例如\1表示引用第一个子表达式\2引用第二个子表达式

      var reg = /(a)\1\1\1/g;
      var str = 'bbaaaaccaaaaiddddbaaaa';

在这里插入图片描述子表达式有记忆功能
反向引用第一个子表达式匹配到的字符串三次

      var reg = /(\w)\1\1\1/g;
      var str = 'bbaaaaccaaaaiddddbaaaa';

在这里插入图片描述
匹配xxyy

      var reg = /(\w)\1(\w)\2/g;
      var str = 'aabbccddddddcccevv';

在这里插入图片描述

正则对象属性

global是否加上了全局匹配g
ignoreCase是否加上了忽略大小写i
multiline是否加上了匹配换行m
source返回匹配规则本身
在这里插入图片描述

test

reg.test(str) 是否匹配成功 返回布尔值

exec

reg.exec()
类数组 继承Array.prototype
所以类数组不一定都继承Object.prototype
只有自己写的类数组一定继承Object.prototype

      var reg = /123/g;
      var str = '123123123123123';

在这里插入图片描述
他是循环匹配的
在这里插入图片描述
会返回匹配的子表达式

      var reg = /(\w)\1(\w)\2/g;
      var str = 'aabbccddddddccceevvv';

在这里插入图片描述

lastIndex

lastIndex和exec中的index是吻合的
在这里插入图片描述
可以通过lastIndex 去调整exec的index
在这里插入图片描述当把lastIndex改为不是正好匹配的值的时候 exec的index会找到从这个值开始的下一个匹配的下标
在这里插入图片描述
当再次执行时lastIndex会修改回来
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_聪明勇敢有力气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值