摘要:定义正则表达式是用于匹配字符串中字符组合的模式。使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的方法。常用的正则表达式手机号邮政编码校验匹配汉字简易邮箱校验
定义
正则表达式是用于匹配字符串中字符组合的模式。
创建正则表达式两种方式:
1.new RegExp()
let pattern1 = new RegExp("cat"); //第一个参数字符串 let pattern2 = new RegEXP("cat", "ig"); //第二个参数可选模式修饰符
i:忽略大小写
g:全局匹配,即模式被应用于所有字符串,而非匹配到第一项时立即停止
m:多行匹配
y:执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志
2.字面量(以下栗子均使用字面量的方式创建正则表达式)
let pattern3 = /cat/; let pattern4 = /cat/ig;匹配正则表达式
1.test
在字符串中测试是否匹配的RegExp方法,它返回true或false。
let str = "This is a cat!"; console.log(pattern4.test(str)); //true
2.exec
在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。
console.log(pattern4.exec(str)); //[cat]
3.match
在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
console.log(str.match(pattern4)); //[cat]
4.replace
在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
console.log(str.replace(pattern4, "dog")); //This is a dog!
5.search
在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
console.log(str.search(pattern4)); //10
6.split
使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。
console.log(str.split(pattern4)); //["This is a ", "!"]正则表达式语法
重复匹配(?、*、+、.、{m,n})
.匹配除换行符外的任意字符,单个匹配
x?匹配0个或1个x
x*匹配0个或任意多个x
x+匹配至少1个x
x{m,n}匹配最少m,最多n个的x,闭区间
(xyz){m,n}把xyz看成一个整体,匹配xyz最少m次最多n次
chrome|firefox|ie匹配chrome或者firefox或者ie中的任意一个
let str = "google", str1 = "gooooogle", str2 = "ggle", pattern = /g..gle/, pattern1 = /go*gle/, pattern2 = /go+gle/, pattern3 = /g.*gle/,//0个或多个的任意字符 pattern4 = /go?gle/, pattern5 = /go{2,4}gle/, pattern6 = /go{3}gle/,//匹配3个o->gooogle pattern7 = /go{3,}gle/;//匹配3个或3个以上o console.log(pattern.test(str));//true console.log(pattern1.test(str));//true console.log(pattern1.test(str1));//true console.log(pattern2.test(str1));//true console.log(pattern2.test(str2));//false console.log(pattern3.test(str));//true console.log(pattern3.test(str2));//true console.log(pattern4.test(str));//false console.log(pattern7.test(str1));//true
字符类匹配
[a-z]*表示任意个a-z中的字符
[A-Z]*表示任意个A-Z中的字符
[0-9]*表示任意个0-9中的字符
[a-zA-Z0-9]表示匹配一个以上三种情况下的任意一个字符
[^0-9]表示非0-9的任意字符
^[0-9]表示以0-9为起始字符,^表示从起始位置开始匹配
[0-9]$表示以0-9为结束字符,$表示匹配结束位置
/d匹配数字,同[0-9]
/D匹配非数字,同[ ^0-9]
/w匹配字母数字及下划线_,同[a-zA-Z0-9_]
/W匹配非字母数字及下划线_,同[^a-zA-Z0-9_]
匹配单词边界
B匹配非单词边界
空白字符