对于正则这个规则,给我的第一印象就是写的这是个啥???好长啊,当不断的深入研究的时候,果不其然,丑陋的外表下内在也很不友好,还很懒而且很贪婪。言归正传,话是这么说,合适的人做合适的事情,但是基于正则的这俩大属性,作用也是非常大,专门对付的就是字符串。总结一下。
regular expression
正则在JavaScript中属于正则对象,是引用数据类型EegExp,用来处理字符串的一种规则,用来匹配(test) 和 捕获(exec) 想要的字符串信息,匹配和捕获是在RegExp.prototype上的方法。在实际开发中作用很大,常见的比如:用户登录注册时的校验...
创建正则
正则由俩部分组成,第一部分为元字符,第二部分为修饰符
- 构造函数
let reg = new RegExp("\\d+");//注意:\在字符串中不起作用,所以得用斜杠来转义
- 正则表达式
let reg = /^[\u4E00-\u9FA5]{2,5}(·[\u4E00-\u9FA5]{2,10}){0,2}$/;
正则俩大属性
懒惰性:正则每次捕获和匹配,都是从头开始,原因在于每次操作完,把reg.lastIndex设置为0,在下一次进行操作的时候就从当前索引为0处开始。reg.lastIndex记录了下一次匹配索引的开始位置。
解决办法:加全局修饰符g
贪婪性:正则会按照当前匹配的最长的长度来获取。
解决办法:加
?
正则分组
- 改变优先级
- 实现分组捕获 第一项:大正则匹配的结果,其余项:每一个小分组单独匹配捕获的结果。如果设置了分组(改变优先级),但是捕获的时候不需要单独捕获,可以基于
?:
来处理 - 分组引用: 分组引用就是通过
\数字
其代表对应分组出现一模一样的内容,从左到右依次是分组的的索引。
正则表达式 ?的含义
- 本身就是量词元字符:代表出现0-1次
- 取消正则捕获的贪婪性:放到量词元字符的后面,按照当前的最短的结果捕获
- 在分组中的作用:让当前分组只匹配不捕获;
- ?=:正向预查 表示必须有
- ?!:负向预查 表示除了