正则表达式基础知识2

63 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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 除了数字、字母和下划线都匹配 基本上没有什么特别好的使用场景,知道就行了