正则表达式

什么是正则表达式
  • 是一种描述字符串结构的语法规则
  • 是用于匹配字符串中字符组合的模式
  • 是一个对象

正则表达式的作用
  • 验证表单-限定只能输入字母或者数字
  • 用于过滤页面一些特定的词,获取想要的特定部分

使用正则表达式
  1. ## 字面量
  2. var reg1 = //; // 例子 var reg1 = /abc/
  3. ## 构造函数
  4. var reg new RegExp(//);或者 // 例子 var reg = new RegExp(/abc/);
  5. var reg RexExp(//); // 例子 var reg = RegExp(/abc/);

实例方法
  • [RegExp.prototype.compile()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/compile)
    运行脚本的期间(重新)编译正则表达式。
  • [RegExp.prototype.exec()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec)
    在该字符串中执行匹配项的搜索。
  • [RegExp.prototype.test()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)
    该正则在字符串里是否有匹配。
  • [RegExp.prototype[@@match]()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@match)
    对给定字符串执行匹配并返回匹配结果。
  • [RegExp.prototype[@@matchAll]()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll)
    对给定字符串执行匹配,返回所有匹配结果。
  • [RegExp.prototype[@@replace]()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace)
    给定新的子串,替换所有匹配结果。
  • [RegExp.prototype[@@search]()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)
    在给定字符串中搜索匹配项,并返回在字符串中找到字符索引。
  • [RegExp.prototype[@@split]()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@split)
    通过将给定字符串拆分为子字符串,并返回字符串形成的数组。
  • [RegExp.prototype.toString()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toString)
    返回表示指定对象的字符串。重写[Object.prototype.toString()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)方法。

    一个正则表达式是由字符构成的

  • 模式修饰符
    | 标志 | 描述 | | —- | —- | | i | 不区分大小写搜索。 | | g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 | | m | 多行匹配。 | | s | 允许 .
    匹配换行符。 | | u | 使用unicode
    码的模式进行匹配。 | | y | 执行“粘性(sticky
    )”搜索,匹配从目标字符串的当前位置开始。 |


  • 特殊字符(元字符)
    元字符(Metacharacter)是拥有特殊含义的字符
    • 边界符(位置符)
      用来提示字符的位置
      | 边界符 | 说明 | | —- | —- | | ^ | 表示匹配行首的文本 | | $ | 表示匹配行尾的文本 |

  • 预定义类
    例子: | 字符 | 全拼 | 说明 | | —- | —- | —- | | . | | 表示任何字符,默认情况下点与换行符 \\n
    不匹配。,在s标志下可 | | \d | digit | 数字:从 0
    9
    的字符。 | | \s | space | 空格符号:包括空格,制表符 \\t
    ,换行符 \\n
    和其他少数稀有字符,例如 \\v
    \\f
    \\r
    。 | | \w | word | “单字”字符:拉丁字母或数字或下划线 _ |
取反 说明
\D 非数字
\S 非空格符
\W 非任何字符
  1. match() 方法检索返回一个字符串匹配正则表达式的结果。
  2. alert( "I love HTML5!".match(/\s\w\w\w\w\d/) );

image-20220417152016723.png


  • 字符类
    字符类是一个字符集,如果字符集中的任何一个字符有匹配,它就会找到该匹配项
    | 模式 | 说明 | | —- | —- | | [cat] | 匹配字符汇中任意一个字符c,a,t | | [^cat] | 匹配除c,a,t以外的字符 | | [A-Z] | 匹配字幕字母A-Z范围内的字符 |

  • 取反符
    当中括号[]与元字符 ^ 一起使用的时候就称为取反符,表示匹配不在指定字符范围内的字符。
    | 模式 | 说明 | | —- | —- | | [^cat] | 匹配除c,a,t以外的字符 |
  • 量词符与括号字符

    • 量词符
      量词符用来设定某个模式出现的次数,通过使用量词符号(?+ {})能够完成某个字符连续出现的匹配 | 字符 | 说明 | 实例 | 结果 | | —- | —- | —- | —- | | ? | 匹配 ?前面一个字符 0 次或者 1 次 | hi?t | ht和hit | | + | 匹配 + 前面一个表达式 1 次或者多次 | bre+ad | bread到bre…ad | | | 匹配 前一个字符 0 次或多次 | rose | rse到ro…se | | {n} | 匹配{}前面字符n次 | hit{2}er | 只能匹配hitter | | {n,} | 匹配{}前面字符最少n次 | hit{2,}er | hitter到hitt…er | | {n,m} | 匹配{}前面的字符最少n次,最多m次 | fe{0,2} | fl,fel ,feel |
  • 括号字符
    中括号[]表示数字集合,匹配中括号里面的任意字符
    大括号{}表示量词符,能够完成某个字符连续出现的匹配
    小括号()表示优先级,被花括号括起来的内容被称为‘子表达式’

String类中的方法

方法 描述
[exec](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec) 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回 null)。
[test](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) 一个在字符串中测试是否匹配的RegExp方法,它返回 true 或 false。
[match](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/match) 一个在字符串中执行查找匹配的String方法,它返回一个数组,在未匹配到时会返回 null。
[matchAll](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/matchAll) 一个在字符串中执行查找所有匹配的String方法,它返回一个迭代器(iterator)。
[search](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/search) 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
[replace](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace) 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
[split](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split) 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的 String
方法。

可视化:https://jex.im/regulex