JavaScript RegExp Object

创建正则对象

构建函数RegExp创建正则对象

1
var reg = new RegExp('i$'); // reg匹配以i字母结尾的字符串

使用正则字面量

1
var reg = /i$/;

正则表达式字符

反斜杠\在正则表达式中表示转义序列

1
2
特殊符号:
^ $ . * + ? = ! | \ / ( ) [ ] { }

如果要在正则表达式中匹配特殊符号, 就应该在特殊符号前面的加上反斜杠\进行转义

1
var reg = /\$/; // reg匹配$符号

字面量字符

1
2
3
4
5
6
7
8
9
10
11
12
------------------------------------------------------------------ 
字符 | 匹配
------------------------------------------------------------------
\o | NUL字符(\u0000)
\t | 制表符(\u0009)
\n | 换行符(\u000A)
\v | 垂直制表符(\u000B)
\f | 换页符
\r | 回车符
\xnn | 十六进制数nn指定拉丁字符, 如: \x0A等同于\n
\uxxxx | 十六进制xxxx指定的Unicode字符, 如: \u0009等同于\t
------------------------------------------------------------------

字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
------------------------------------------------------------------
字符 | 匹配
------------------------------------------------------------------
[...] | 中括号内的任意字符
[^...] | 非中括号内的任意字符
[0-9] | 0-9之间的数字
[a-z] | 小写拉丁字母
[A-Z] | 大写拉丁字母
[ 0-9a-zA-Z ] | 数字和大小写拉丁字母
. | 除换行符和其它Unicode行终止符之外的任意字符
\s | 任意Unicode空白符
\S | 任意非Unicode空白符
\d | 任意ASCII码数字, 等同于[0-9]
\D | 任意非ASCII码数字字符, 等同于[^0-9]
\w | 等同于[a-zA-Z0-9_]
\W | 等同于[^a-zA-Z0-9_]
------------------------------------------------------------------

贪婪的重复字符

1
2
3
4
5
6
7
8
9
10
------------------------------------------------------------------
字符 | 匹配次数
------------------------------------------------------------------
{n,m} | 至少n次, 但不能超过m次
{n,} | 至少n次
{n} | 刚好n次
? | 零次或者一次, 等同于{0,1}
+ | 至少一次, 等同于{1,}
* | 零次或者多次, 等同于{0,}
------------------------------------------------------------------

非贪婪的重复匹配只需要在贪婪的重复字符后面加上一个?, 且问好之后没有其它的表达式字符, 不然会忽略非贪婪匹配

选择,分组和引用

1
2
3
4
5
6
7
8
--------------------------------------------------------------------------
字符 | 含义
--------------------------------------------------------------------------
| | 表示或,用于分隔选择
() | 子表达式(子模式), 引用子模式匹配结果
(?:) | 子表达式(子模式), 引用子模式匹配结果, 匹配结果不显示在正则匹配结果中
\n(n为数字) | 引用对应的子模式匹配结果
--------------------------------------------------------------------------

位置字符

1
2
3
4
5
6
7
8
9
10
--------------------------------------------------------------------------
字符 | 含义
--------------------------------------------------------------------------
^ | 字符串的开头
$ | 字符串的结尾
\b | 位于\w和\W的边界或者位于一个ASCII单词字符与一个字符串开头和结尾之间的边界
\B | 非词语之间的位置
(?=p) | 正前向声明, 要求接下来的字符与模式p匹配,但不包括匹配中的字符
(?!p) | 反前向声明, 要求接下来的字符不与模式p匹配
--------------------------------------------------------------------------

正则对象标志, 属性和方法

标志

1
2
3
4
5
6
7
-----------------------------------------------------
标志 | 含义
-----------------------------------------------------
g | 全局匹配
i | 不区分大小写
m | 多行匹配
-----------------------------------------------------

方法

1
2
3
4
5
6
7
-------------------------------------------------------------------
方法 | 含义
-------------------------------------------------------------------
exec | 接收一个字符串参数, 返回由完全匹配和子表达式匹配结果组成的数组
test | 接收一个字符串参数, 返回boolean值
compile | 编译正则表达式
-------------------------------------------------------------------

属性

1
2
3
4
5
6
7
8
9
-------------------------------------------------------------------
属性 | 含义
-------------------------------------------------------------------
sourse | 正则表达式的文本
global | 是否拥有全局搜索标志g
ignoreCase | 是否拥有标志i
multiline | 是否拥有标志m
lastIndex | 搜索匹配的开始位置(可读写)
-------------------------------------------------------------------

参考链接