10.1 正则表达式的定义
- 正则表达式直接量为包含在一对斜杠(/)之间的字符。
- ES3规定,同一段代码所表示的正则表达式直接量会返回同一个RegExp对象。
- ES5规定,同一段代码所表示的正则表达式直接量每次都会返回一个新对象。
10.1.1 直接量字符
- 反斜杠(\)用以转义
10.1.2 字符类
[...] 方括号内的任意字符 [^...] 除了方括号内的任意字符
. 除了换行符和行终止符以外的任意字符
\w 等价于[a-zA-Z0-9] \W 等价于[^a-zA-Z0-9]
\s 任意空白符
\d 等价于[0-9]
10.1.3 重复
{n,m} 匹配前一项至少n次,不超过m次
{n,} 匹配前一项n次或以上
{n} 匹配前一项n次
? 等价于{0,1}
+ 等价于{1,}
* 等价于{0,}
使用*和?必须谨慎,因为它们允许什么都不匹配。
非贪婪的匹配
- 在待匹配的字符串后加一个问号(?)可以尽可能少地匹配。
- 正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。
10.1.4 选择、分组和引用
- 选择:“|”
- "()"的多种作用
- 组合
/(ab+cd)+|ef/
- 定义子模式
/[a-z]+(\d+)/
- 在同一正则表达式的后部引用前面的子表达式(是与被引用子表达式相匹配的文本的引用)。 "\"加上数字来指定子表达式(数字是参与计数的左括号的位置)
- 组合
- "(?: ...)"只用于组合,不记忆与改组匹配的字符。
10.1.5 指定匹配位置
^ 匹配开头
$ 匹配结尾
\b 匹配单词的边界
\B 匹配非单词边界的地方
(?=p) 接下来的字符串与p匹配
(?!=p) 接下来的字符串不与p匹配
10.1.6 修饰符
修饰符放“//”后面。
i 不区分大小写
g 全局匹配,找到所有的匹配
m 多行匹配(^匹配字符串的开头和行开头,$匹配字符串的结尾和行结尾)
10.2 用于模式匹配的String方法
String拥有的和正则表达式匹配相关的方法
- search() 返回第一个与之匹配的子串的起始位置,没有则返回-1
- replace() 检索替换
- 单纯的字符串替换(可单个可全局)
- 替换字符串中含有$加数字,用指定的子表达式匹配的文本替换
- 第二个参数可以是函数
- match() 返回字符串的匹配结果
- 全局:返回包含所有匹配结果的数组
- 单个:返回数组的第一个元素是第一个匹配结果,其他元素是子表达式
解析URL的正则表达式:/(\w+):\/\/([\w.]+)\/(\S*)/
- split() 拆分字符串
10.3 RegExp对象
10.3.1 RegExp的属性
- source 包含正则表达式的文本(String)
- global 说明是否全局匹配(Boolean)
- ignoreCase 说明是否不区分大小写(Boolean)
- multiline 说明是否多行匹配(Boolean)
- lastIndex 下一次搜索的开始位置(被exec函数和test函数利用)
10.3.2 RegExp的方法
- exec()
- 效果和返回结果类似String.match() ,但只返回一个匹配结果,因而可重复调用
- 返回结果的属性包括index(发生匹配的位置)和input(正在检索的字符串)
- test()
- 同exec()可重复调用
网友评论