概念
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串、将匹配的子串做替换或者从某个字符串中取出符合某个条件的子串等。
我的理解就是,处理某字符串中的子串很方便。
创建方式
字面量创建方式
var reg = /pattern/flags
// 字面量创建方式
pattern:正则表达式
flags:标识(修饰符)
实例创建方式
var reg = new RegExp(pattern,flags);
//实例创建方式
pattern:正则表达式
flags:标识(修饰符)
细小知识点
注意事项
- i忽略大小写匹配
- 多行匹配,即在到达一行文本末尾时还会继续寻常下一行中是否与正则匹配的项
- 全局匹配 模式应用于所有字符串,而非在找到第一个匹配项时停止
两种创建方式的区别 - 字面量创建方式不能进行字符串拼接,实例创建方式可以
- 字面量创建方式特殊含义的字符不需要转义,实例创建方式需要转义
优先级
- 正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。
- 相同优先级的会从左到右进行运算,不同优先级的运算先高后低。
下面是常见的运算符的优先级排列。
依次从最高到最低说明各种正则表达式运算符的优先级顺序:
\ : 转义符
(), (?:), (?=), [] => 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} => 量词限定符
^, $, \任何元字符、任何字符
| => 替换,"或"操作
字符具有高于替换运算符的优先级,一般用 | 的时候,
为了提高 | 的优先级,我们常用()来提高优先级
如: 匹配 food或者foot的时候 reg = /foo(t|d)/ 这样来匹配
特性
- 贪婪性
所谓的贪婪性就是正则在捕获时,每一次会尽可能多的去捕获符合条件的内容。
如果我们想尽可能的少的去捕获符合条件的字符串的话,可以在量词元字符后加? - 懒惰性
懒惰性则是正则在成功捕获一次后不管后边的字符串有没有符合条件的都不再捕获。
如果想捕获目标中所有符合条件的字符串的话,我们可以用标识符g来标明是全局捕获