第一 权威指南
JavaScript中的正则表达式用RegExp对象表示,可以使用RegExp()构造函数来创建RegExp对象,不过RegExp对象更多的是通过一种特殊的直接量语法来创建。
var pattern = /s$/;
var pattern = new RegExp("s$");
正则表达式中的直接量字符
字符
字母和数字字符 匹配自身
\o 匹配NUL
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车符
\xnn 由16进制数nn指定的拉丁字符
\uxxx 由16进制数xxx指定的Unicode字符
\cx 控制字符^x
\s 空格符
在正则表达式中,有一些字符具有特殊含义,但是在使用过程中必须使用前缀\.
特殊含义符号表
[……] 方括号内的任意字符
[^……] 不在方括号内的任意字符
* 除换行符和其他Unicode行终止符之外的任意字符。
\w 等价于 [a-zA-Z0-9] 任何ASCII字符组成的单词
\W 等价于[^a-zA-Z0-9] 任何不是ASCII字符组成的单词
\s 任何Unicode空白符
\S 任何非Unicode空白符的字符
\d 等价于 [0-9] 任何ASCII数字
\D 等价于 [^0-9] 除了ASCII数字之外的任意字符
[\b] 退格直接量 匹配边界
(?=) 先行判断
带有(?!的断言是负向先行断言,用以指定接下来的字符都不用匹配
正则表达式的重复字符语法
{n,m} 匹配前一项n次,但是不能超过m次
{n,} 匹配前一项n次或者更多次
{n} 匹配前一项n次
? 等价于{0,1} 匹配前一项0次或者1次,也就是说前一项是可选的
+ 等价于 {1,} 匹配前一项1次或者多次
* 等价于 {0,} 匹配前一项0次或者多次
/\d{11}/ 匹配11位数字
/\1{1}|\d{10}/ 这样是不对的 匹配顺序是从左到右,匹配遇到第一个就不匹配剩下的了
/java(script)?/
可以匹配字符串java,其后可以有script也可以没有
圆括号的作用
- 完整的模式中定义子模式;
- 允许正则表达式的后部引用前面的子表达式;这是通过在字符『\』后多一位或者多位数字来实现的。
/[a-z]+\d/
(/[a-z]+(\d+)/)
以上两者的分别:
/([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/
正则表达式的选择、分组和引用字符
| 选择
(...) 组合
(?:...)只组合
修饰符 必须在第二条斜线之外
i 用以说明模式匹配是不区分大小写的
g 说明模式匹配应该是全局的
m用以多行模式中的执行匹配。如果待检索的字符串包含多行,那么^$锚字符除了匹配整个字符串的开始和结尾之外,还能匹配每行的开始和结尾。
10.2 用于模式匹配的String方法
- search() 参数是一个正则表达式 ,返回第一个与之匹配的子串的起始位置。如果找不到匹配的子串,返回-1.他忽略正则表达式参数中的修饰符g。
- replace() 用以执行检索和替换操作。 第一个参数是正则表达式,第二个参数是要进行替换的字符串。