写代码时,尤其是为表单添加验证时,经常会用到正则表达式,这时候,一堆相关的函数就浮现出来了,由于比较类似,所以经常不能快速选择最合适的函数,对于懒癌前端,更得马上上网百度。为了使用时快速找到最合适的函数,这里将这些常用函数汇总一下,并看看如何记忆最方便。
首先,分成两块记忆:
1、RegExp对象的 3 个方法:test()、exec()、compile()
2、String对象的4个方法:search()、replace()、split()、match()
记忆大法:
reg.test(str)
reg.exec(str)
reg.compile(reg,modifier)
stringObject.search(regexp/str)
stringObject.match(regexp/str)
stringObject.replace(regexp/str,replacement)
stringObject.split(regexp/str)
先说第一部分:
test() 最常用,如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
compile() 感觉很少用到,看字面意思,就是编译正则对象,用于在脚本执行过程中编译正则表达式,
也可以改变和重新编译正则表达式。
exec()这个方法极其恶心,下面的说明,扫一眼就行了,还是看示例代码舒服。
该方法属于一个比较复杂的方法,它接受一个字符串,返回的是一个数组,数组中第0个元素是匹配的子字符串,第二个元素是正则中的第一个子分组匹配的结果(如果有子分组,即正则中存在用圆括号括起来的分组),第三个是正则中第二个子分组匹配的结果(如果有第二个子分组)...以此类推,如果没有正则子分组,那么该数组长度仅仅为1,就是匹配到的那个子字符串。同时,返回的这个数组同时还是一个对象,它拥有两个属性,分别为index表示当前匹配到的子字符串所处的位置,input属性表示被匹配的原始字符串。最后,该方法中的正则对象如果不是全局匹配,即没有g修饰符,则每次调用只会从字符串开头处匹配第一个结果,且每次调用结果都是一样的。只有指定为全局匹配,才能够按照从左往右依次去匹配,每次调用匹配一个结果,正则对象的lastIndex属性前进到本次匹配的末尾位置,下回再调用的时候,会从lastIndex处开始匹配而不是从头匹配。
再看第二部分:
search() 用来查找第一次匹配的子字符串的位置,如果找到就返回一个number类型的index值,否则返回-1,它返回的只是第一次匹配的位置。
replace() 太简单,不讲
split() 用来将一个字符串拆分成一个数组,它接受一个正则或者子字符(串)作为参数,返回一个数组,简单情况下,我们不需要使用正则,只有在字符串拆分规则不统一的情况下才需要使用正则,如下:
match() 该方法接受一个正则作为参数,用来匹配一个字符串,它的输出结果在不是全局匹配的情况下和exec方法的结果一致即一个数组并带有额外的属性,如果采用全局匹配,则不返回任何和其被匹配字符串相关的信息,只返回匹配的结果。
写到这里快吐了。。。。。。。。不想看 exec 方法,太恶心了。。。。
发了那么多电影相关的文章,也该写写前端方面的文章了,今天终于认真写了两篇。
交流技术?加作者微信吧