一、^ 以xxx开头
1、以数字开头时
let reg = /^\d/
let box = "6aaaaaaaa"
console.log(reg.test(box)) // 结果为true
2、以非数字开头时
let reg = /^\d/
let box = "aaaaaaaa"
console.log(reg.test(box)) // 结果为false
二、$ 以xxx结尾
1、以数字结尾时
let reg = /\d$/
let box = "text1"
console.log(reg.test(box)) // 结果为true
2、以非数字结尾时
let reg = /\d$/
let box = "text"
console.log(reg.test(box)) // 结果为false
三、^ 和 $ 结合使用时
1、如果都使用,那么要匹配的值必须得是某个规则的才行;
如下代码,\d+原本表示只要包含0到9的数字,且有1个或者多个就行,但是前后都加上了^ 和 $,那么此时就表示只能是数字,所以结果为false
let reg = /^\d+$/
let box = "1text2"
console.log(reg.test(box)) // 结果为false
2、当如果只有其中一个元字符时,比如只有^,那么只要是以xxx开头就行,具体的值没有强制规定;
如下代码,开头是^,结尾没有$,那么只要开头是数字即可,反之亦然
let reg = /^\d+/
let box = "1text2"
console.log(reg.test(box)) // 结果为true
四、. 小数点,看似是小数点,其实是除了\n以外的任意字符,其中\n是换行符
1、举例
let reg = /^6.8$/
let box = "6@8"
console.log(reg.test(box)) // 结果为true
2、举例
let reg = /^6.8$/
let box = "6.8"
console.log(reg.test(box)) // 结果为true
3、举例
let reg = /^6.8$/
let box = "68"
console.log(reg.test(box)) // 结果为false
五、\ 转义字符,将普通的转为特殊的,将特殊的转为普通的
1、回头看上面第四个案例,然后对比如下代码,也就是说中间必须得是小数点了,而不能是其它字符
let reg = /^6\.8$/
let box = "6@8"
console.log(reg.test(box)) // 结果为false
let reg = /^6\.8$/
let box = "6.8"
console.log(reg.test(box)) // 结果为true
2、所以,可以直接想到这么写
let reg = /^6\@8$/
let box = "6@8"
console.log(reg.test(box)) // 结果为true
3、写一个比较恶心的例子,如下代码;
正常理解的结果应该是true,但实际结果却为fasle;
let reg = /^\\d$/
let box = "\d"
console.log(reg.test(box)) // 结果为false
虽然正则中规定的匹配值为\d,但在字符串中,直接写\d是有特殊含义的,所以正确写法如下:
也就是说在字符串中也进行了转义
let reg = /^\\d$/
let box = "\\d"
console.log(reg.test(box)) // 结果为true
4、同样的恶心的例子:
开头必须为6,中间是除了\n换行符以外的任意字符,结尾是必须为8的值;
所以在字符串中,6开头没问题,中间@符没问题,结尾既可以写\8,也可以直接写8
let reg = /^6.\8$/
let box = "6@\8"
console.log(reg.test(box)) // 结果为true
let reg = /^6.\8$/
let box = "6@8"
console.log(reg.test(box)) // 结果为true
六、x|y 和 () 的结合使用
1、x|y表示只要有其中x或者y的其中一个即可
let reg = /^12|34$/
// let box = "1234"
// let box = "134"
// let box = "124"
// let box = "234"
// let box = "123"
// let box = "12"
// let box = "34"
console.log(reg.test(box)) // 以上结果全都为true
2、上面例子的结果并不是我们想要的,我们想要的是要么以单纯的12开头,要么以单纯的34结尾,此时就需要()分组来解决:
let reg = /^(12|34)$/
// let box = "1234" // 结果为false
// let box = "134" // 结果为false
// let box = "124" // 结果为false
// let box = "234" // 结果为false
// let box = "123" // 结果为false
// let box = "12" // 结果为true
// let box = "34" // 结果为true
七、[] 中括号出现的字符一般,注意是一般都代表本身的意思
1、举例
let reg = /^[@+]$/
let box = "@"
console.log(reg.test(box)) // 结果为true
2、举例
let reg = /^[@+]$/
let box = "+"
console.log(reg.test(box)) // 结果为true
3、举例,其中中括号里面的+加号此时不再代表一次或者多次,就只代表正常的+加号本身,所以此代码表示只要有@或者+,且有一个或者多个就行
let reg = /^[@+]+$/
// let box = "@"
// let box = "+"
// let box = "@+"
// let box = "@@"
// let box = "@@+"
// let box = "@@++"
console.log(reg.test(box)) // 以上结果都为true
4、比较特殊的,比如\d,在[]中依然代表0到9的数字
let reg = /^[\d+]+$/
let box = "\d"
console.log(reg.test(box)) // 结果为false
所以
let reg = /^[\d+]+$/
// let box = "1"
// let box = "123"
console.log(reg.test(box)) // 以上结果都为true
但是如果对正则中再次进行转义,如下代码的变量reg,此时就代表了单独的\和d
let reg = /^[\\d+]+$/
// let box = "99" // 结果为 false
// let box = "\d" // 结果为 true
// let box = "\dd" // 结果为 true
// let box = "\\dd" // 结果为 true
5、[] 中不存在多位数
let reg = /^[188]$/
// let box = "1" // 结果为 true
// let box = "8" // 结果为 true
// let box = "18" // 结果为 false
来源:CSDN
作者:LiuDevelop
链接:https://blog.csdn.net/qq_21980517/article/details/104280747