正则表达式是一个描述字符模式的对象。JavaScript 的 RegExp 类表示正则表达式,String 和 RegExp 都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能。
正则表达式的定义
正则表达式可以使用 RegExp() 构造函数来创建 RegExp 对象,更多的是通过一种特殊的直接量语法来创建。
var pattern = new RegExp('s$');
var pattern = / s$ /;
正则表达式中的所有字母和数字都是按照字面含义进行匹配的。JavaScript 正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜线(\)作为前缀转义。
1.直接量字符
字符 | 匹配 |
---|---|
字母和数字字符 | 自身 |
\o | NUL 字符(\u0000) |
\t | 水平制表符(\u0009) |
\v | 垂直制表符(\u000B) |
\r | 回车符(\u000D) |
\n | 换行符(\u000A) |
\xnn | 由十六进制数 nn 指定的拉丁字符,例如,\x0A 等价于 \n |
\uxxxx | 由十六进制数 xxxx 指定的 Unicode 字符,例如 \u0009 等价于 \t |
\cX | 控制字符 ^X,例如,\cJ 等价于换行符 \n |
2.字符类
将直接量字符单独放进方括号内就组成了字符类。一个字符类可以匹配它所包含的任意字符。
字符 | 匹配 |
---|---|
[…] | 方括号内的任意字符 |
[^…] | 不在方括号内的任意字符 |
. | 除换行符和其他 Unicode 行终止符之外的任意字符 |
\w | 任何 ASCII 字符组组成的单词,等价于 [ a-zA-Z0-9 ] |
\W | 任何不是 ASCII 字符组成的单词,等价于 [ ^a-zA-Z0-9 ] |
[…] | 方括号内的任意字符 |
[…] | 方括号内的任意字符 |
[…] | 方括号内的任意字符 |
[…] | 方括号内的任意字符 |