持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情
约束边界
以什么开始^,以什么结束$
下面的意思是以102开始,并且以102结束,中间可以是任意个任意字符 102.231022 不匹配 0102.23102 不匹配 102.23102 匹配 102.23102102 匹配
var price = 102.231022;
var reg = /^(102).*\1$/;
console.log(reg.test(price))
数值与空白元字符
\d 就是匹配数字的,如下程序打印就是2022一个数组,如果没有g,只匹配第一个2就结束了。g是global的意思,全局匹配
var str = "shizebangshigoulanzi2022"
console.log(str.match(/\d/g))
// ['2', '0', '2', '2']
如下案例,如果没有g,只会匹配第一个电话号码,加了个g就可以匹配两个电话了
var str = "saobang:010-7777777 lisao:010-8888888"
console.log(str.match(/\d{3}-\d{7}/g))
// ['010-7777777', '010-8888888']
\d是表示匹配数据,匹配非数字就是\D ,下面的例子是匹配所有的非数字的字符串
var str = "shizebangshigoulanzi2022"
console.log(str.match(/\D/g))
// ['s', 'h', 'i', 'z', 'e', 'b', 'a', 'n', 'g', 's', 'h', 'i', 'g', 'o', 'u', 'l', 'a', 'n', 'z', 'i']
利用取反的特性可以选出一些不想匹配的东西用中括号包裹,然后前面加^符号,就是取反的意思,在中括号外表示开始,在里面就是取反。
var str = `
saobang:010-7777777 lisao:010-8888888
`
console.log(str.match(/[^\d:-]+/g))
\s 表示空格和换行
var str = `
saobang:010-7777777 lisao:010-8888888
`
console.log(str.match(/\s/g))
// ['\n', ' ', ' ', ' ', ' ', ' ', '\n', ' ', ' ', ' ', ' ']
w 和 W
\w代表匹配,数字字母和下划线
var str = "saobang1980_@%%@#$%";
var reg = /\w+/g;
console.log(str.match(reg))
邮箱校验,必须以多个字符开头加@加几个数字或者字母或者下划线加个点加几个数字字母结束。不太严谨,但是可以根据实际情况细化
var str = "saobang@163.com"
var reg = /^\w+@\w+\.\w+$/;
console.log(str.match(reg))
\W 除了数字、字母和下划线都匹配 基本上没有什么特别好的使用场景,知道就行了