前端基础-JavaScript的正则表达式详解

一、概念:

  • 正则表达式(Regular Expression),用于描述一组字符串特征的模式,可以用于匹配特定的字符串。
  • 本质是一个规则字符串,用指定的符号来编写,制定规则。

二、应用场景:

  • 验证:对表单数据的合法性验证;
  • 查找:从大量的字符串数据中快速提取到指定内容;
  • 替换:从大量的字符串数据中快速提取到指定内容,并进行替换;

三、如何创建正则表达式:

  • 方式一:

    • var 正则变量名称=new RegExp('正则表达式');

    • 转义符\使用要用两个\\

    • var telReg=new RegExp('^1[3-9]\\d{9}$');
  • 方式二:(常用)

    • var 正则变量名称=/正则表达式/

    • 转义符\使用只需要一个\

    • var telReg=/^1[3-9]\d{9}$/;

四、语法 

  • 字符类
    • .
      • 匹配任意一个字符。
    • []
      • 匹配中括号中任意一个字符。
      • [abc]:取a、b、c中任意一个字符。
    • -
      • 在中括号中表示字符范围。
      • [a-zA-Z]:取任意一个大写或小写字母。
      • [a-zA-Z0-9]:取任意一个数字、字母。
    • ^
      • 在中括号中表示除中括号内字符以外的任意一个字符。
      • [^a-zA-Z]:取除字母以外的任意一个字符。
  • 数量限定符
    • ?
      • 紧跟前面的单元匹配0次或1次。
      • [a-z]?:出现0次或1次小写字母。
    • +
      • 紧跟前面的单元匹配1次或多次。
      • [a-z]+:出现1次或多次小写字母。
    • *
      • 紧跟前面的单元匹配任意次。
      • [a-z]*:出现任意次小写字母。
    • {N}
      • 紧跟前面的单元匹配N次。
      • [a-z]{2}:出现2次小写字母。
    • {N,}
      • 紧跟前面的单元匹配至少N次。
      • [a-z]{2,}:出现至少2次小写字母。
    • {0,M}
      • 紧跟前面的单元匹配至多M次。
      • [a-z]{,2}:出现至多2次小写字母。
    • {N,M}
      • 紧跟前面的单元匹配至少N次至多M次。
      • [a-z]{6,12}:出现至少6次至多12次小写字母。
  • 位置限定符
    • ^:
      • 匹配行首位置。
      • ^1:以1开头。
      • ^[a-z]:以小写字母开头。
    • $:
      • 匹配行尾位置。
      • [a-z]$:以小写字母结尾。
  • 预定义符号
    • \w:
      • 数字、字母、下划线中任意一个字符。等价于[a-zA-Z0-9_]
    • \W:
      • 除了数字、字母、下划线以外的任意一个字符。等价于[^a-zA-Z0-9_]
    • \d:
      • 任意一个数字字符。等价于[0-9]
    • \D:
      • 任意一个非数字字符。等价于[^0-9]
    • \s:
      • 匹配任意一个空白字符(空格和换行)。
    • \S:
      • 匹配任意一个非空白字符(空格和换行)。
  • 特殊符号
    • ()
      • 将小括号中内容作为一个单元进行处理(一个整体)。
      • \.(com|cn|org)$:以.com.cn.org结尾。
    • |
      • 表示或者。
    • \
      • 转义符,将\右边的字符进行转义,如果右边的字符具备特殊意义(正则字符),则转义后,不具备特殊意义(普通字符)。

五、常用函数: 

  • test()

    • 判断指定字符串是否满足当前正则表达式规则,如果满足则返回true,否则返回false。

    • var reg=/^\.(com|cn|org)$/;
      var str=prompt('请输入:');
      console.log(reg.test(str));

 六、String中正则表达式的相关常用函数

  • match()

    • 用于检索当前字符串中与指定正则表达式匹配的值。

    • 参数

      • 目标正则表达式。
    • 返回值

      • 查找到的目标字符结果。
      • var str='12ab34cd56ef78gh999';
        var reg=/[0-9]+/g;
        console.log(str.match(reg));//['12','34','56','78','999']

  • replace()

    • 将当前字符串中与指定正则表达式匹配的值替换为指定值。

    • 参数

      • 目标正则表达式。
    • 返回值

      • 替换后的字符串结果。
      • var str='123abc456efg789';
        var reg=/[0-9]/g;
        console.log(str.replace(reg,'*'));//***abc***efg***

  • split()

    • 将当前字符串中与指定正则表达式匹配的值作为分割符进行分割,形成子串数组。

    • 参数

      • 目标正则表达式。
    • 返回值

      • 切割后的子串数组。
      • var str='123abc456efg';
        var reg=/[0-9]+/;
        console.log(str.split(reg));//['','abc','efg']

七、匹配模式

  • 分类

    • u:只匹配第一个子串结果。默认模式。
    • g:全局匹配模式,匹配所有子串。
    • i:忽略大小写模式。
  • 使用

    • 方式一:

      • var 正则变量名称=new RegExp('正则表达式','模式');

      • var telReg=new RegExp('[a-z]','ig');

      • 方式二:(常用)

        • var 正则变量名称=/正则表达式/模式

        • var telReg=/[a-z]/ig;

猜你喜欢

转载自blog.csdn.net/wzy_PROTEIN/article/details/128901434