正则表达式语法

135 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

前言

RegExp表达式为我们校验带来了极大的方便,为了满足我们日常开发,写出想要的正则表示式我们需要熟悉正则表示式。正则表达式是为了检验字符串,首先我们要清楚常用的字符在正则中如何表示。

字符匹配

我们可以用'[]'包裹字符,表示我们想要匹配对应的字符。

  • 数字;如果我们想要匹配数字,就用[0-9]表示即可。
      const str = '123adfes'
      const reg = new RegExp(/[0-9]/)
      console.log(reg.test(str))//true
  • 字母;[A-Z]表示大写,[a-z]表示小写。
      const str = '123adfes'
      const str1 = '123ABC'
      const reg = new RegExp(/[a-z]/)
      console.log(reg.test(str))//true
      console.log(reg.test(str1))//false

如果我们想要大小写可以结合起来写成A-z,但是不能写成a-Z这样是不符合规则的。如果还想将字母跟数字结合起来,再加上一个下划线就有了简洁写法。

  • 字母+数字+下划线;\w,反斜杠加w就能表示,它就等于[0-9A-z_]。
  • 中文;[\u4e00-\u9fas]表示中文,之所以这么表示,是因为Unicode编码,该范围的Unicode就代表着汉字。
      const str = "我是谁"
      const str1="abc"
      const reg = new RegExp(/[\u4e00-\u9fa5]/)
      console.log(reg.test(str))//true
      console.log(reg.test(str1))//false
  • 指定字符;如果我们想要指定字符,直接在'[]'填入想要的字符即可。
  • 去除字符;当我们在字符前面加上^,那么就会匹配除了'[]'里的字符之外的所有字符。比如,我们可以匹配不包含数字的字符串。
      const str = 'ab';
      const str1 = '12456';
      const reg = new RegExp(/[^0-9]/);
      console.log(reg.test(str)); //true 没有数字
      console.log(reg.test(str1)); //false 有数字
  • .点字符;当我们想要匹配除了换行符任意字符。那么我们就可以用'.'字符来表示
      const str="123aBc哈哈"
      const reg = new RegExp(/./)
      console.log(reg.test(str))//true
  • 只匹配换行符。如果我们就想只匹配换行符,那么就用"\n"就可以。

次数匹配

上面语法都是匹配字符的,实际开发中我们会有限制字符长度的需求,那么用正则又该怎么表达。

  • {n,m};匹配成功的次数符合n-m次,n和m都是正整数并且m>n。因为符合才会返回true所以利用这个语法我们就能做到长度限制。
      const str = '1';
      const str1 = '12';
      const reg = new RegExp(/^[0-9a-zA-Z\u4e00-\u9fa5]{2,4}$/);//2-4个字符
      console.log(reg.test(str)); //false
      console.log(reg.test(str1)); //true

了解了{n,m},那么我们可以举一反三,掌握其他表示次数的语法:

  • {n};成功次数为n次。
      const str = 'ab';
      const str1 = 'abbbbaba';
      const reg = new RegExp(/ab{2}/);
      console.log(reg.test(str)); //false ab匹配一次
      console.log(reg.test(str1)); //true ab匹配两次符合
  • {n,};至少成功n次。
      const reg = new RegExp(/ab{1,}/);//至少匹配一次
      console.log(reg.test(str)); //true ab匹配一次符合
      console.log(reg.test(str1)); //true ab匹配两次符合

除了上述我们还可以用一些符号来表示次数,方便开发:

  • '?';表示匹配0次或者1次。
  • '*';表示匹配任意次。
  • '+';表示匹配个数大于1。

总结

以上就是正则常用的一些语法,也发现一个有意思的事情就是在掘金编辑器中*字符后面字体都是斜体,加上反斜杠就显示正常啦,这就是正则的魅力所在,发现小惊喜。