开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
前言
正则表达式大家都不会陌生,不管你是前端还是后端,你用的是Js还是Java都可以用正则。我们做一些表单数据校验的时候也是离不开正则,但是正则的符号又多又复杂,要想非常的顺畅写出正则表达式,需要大量的练习,即便不想练习,对于常见的正则写法,还是需要掌握,这是提高我们效率的工具。在Js中有专门的一个对象——RegExp,它与正则结合起来使用,能让检验事半功倍。
定义
简单理解REgExp就是用来检测文本的,我们可以用正则表达式来写检测规则。具体我们可以用声明一个常量去定义表达式,等号右边就是正则表达式。
const reg = new RegExp("正则")
有了表达式,如何去校验呢?这里就用到了相关方法。
test()方法
test()方法用来检测文本是否符合正则表达式,返回为true或false。
const reg = new RegExp("正则")
console.log(reg.test('这是正则'))//true
注意,是test(),不是text()。
exec()方法
exec()——返回字符串中指定的值。当查找到结果的时候,它会返回一个数组。根据返回结果我们可以做很多的事情,比如vue2.x源码里面都运用了该方法去判断标签。
const reg = new RegExp("div")
console.log(reg.exec('<div>我是div</div>'))
如图所示,相比于test()的布尔值,这个复杂了好多,除了length是长度我们知道,其他几个是什么意思呢?
-
匹配的文本。首先会返回匹配的文本,所以图中数组第0个元素就是'div'上述示例非常简单,所有匹配的文本只返回了一个div,当我们匹配规则为正则,并且有子表达式的时候,那么第0个元素返回匹配文本,后面按照顺序返回对应子表达式的匹配结果。当没有匹配的结果的时候会返回null。
-
下标。实例中的index很明显就是下标了,表示首次匹配到规则的下标。
-
内容。input就是校验的文本,exec()会自动把它放到input保存起来。
除了上述方法,还有两个修改符g跟i,能够帮助我们灵活运用一些检验规则。
g修饰符
const reg = new RegExp(/a/g)
console.log(reg.test('baa'))//true
用test()方法依旧是返回true,修饰符g的主要用途还是全局替换。
const str = 'aaaaa'
console.log(str.replace('a','b'))//baaaa
console.log(str.replace(/a/g,'b'))//bbbbb
i修饰符
当有了i修饰符,那么检验的时候就不会大小写都能符合规则。
const reg = new RegExp(/a/)
const reg1 = new RegExp(/a/i)
console.log(reg.test('AA'))//false
console.log(reg1.test('AA'))//true
总结
以上就是js中RegExp对象,test()方法可以用来检验表单,exec()方法可以用来查找元素,再结合g,i两大修饰符,再麻烦的校验跟查找我们都有办法去解决啦。