正则表达式
什么是正则表达式
- 是一种描述字符串结构的语法规则
- 是用于匹配字符串中字符组合的模式
- 是一个对象
正则表达式的作用
- 验证表单-限定只能输入字母或者数字
- 用于过滤页面一些特定的词,获取想要的特定部分
使用正则表达式
## 字面量
var reg1 = //; // 例子 var reg1 = /abc/
## 构造函数
var reg new RegExp(//);或者 // 例子 var reg = new RegExp(/abc/);
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 | 非任何字符 |
match() 方法检索返回一个字符串匹配正则表达式的结果。
alert( "I love HTML5!".match(/\s\w\w\w\w\d/) );
- 字符类
字符类是一个字符集,如果字符集中的任何一个字符有匹配,它就会找到该匹配项
| 模式 | 说明 | | —- | —- | | [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 方法。 |