- 正则的声明
- 构造函数:
var reg = new RegExp()
;
- 字面量:
var reg = /hello/g
;
其中,g表示全局搜索,i表示忽略大小写,m表示多行搜索。
- 元字符
(
,[
,{
,\
,^
,$
,|
,)
,?
,*
,+
,.
字符 |
含义 |
\t |
制表符 |
\r |
回车符 |
\n |
换行符 |
\f |
换页符 |
\cX |
与X对应的控制字符 |
\v |
垂直制表符 |
\o |
空格符 |
- 字符类
一般情况下正则表达式一个字符对应一个字符串的字符,表达式ab\t
的含义是匹配ab,和一个制表符。
var str = "ab ";
var reg = /ab\t/ig;
var rlt = reg.test(str);
- 预定义类
字符 |
等价类 |
含义 |
. |
[^\r\n] |
除了回车符和换行符之外的所有字符 |
\d |
[0-9] |
数字字符 |
\D |
[^0-9] |
非数字字符 |
\s |
[\t\n\0B\f\r] |
空白符 |
\S |
[^\t\n\0B\f\r] |
非空白符 |
\w |
[a-zA-Z0-9_] |
单词字母下划线 |
\W |
[^a-zA-Z0-9_] |
非单词字母下划线 |
- 边界
字符 |
含义 |
^ |
以xxx开头在中括号里面的^表示取反,其他情况表示开头。 |
$ |
以xxx结尾 |
\b |
单词边界 |
\B |
非单词边界 |
- 量词
字符 |
含义 |
? |
出现0次或者1次(最多出现一次) |
+ |
出现一次或多次(最少出现一次) |
* |
出现任意次 |
{n} |
出现n次 |
{n,m} |
出现n到m次 |
{n,} |
至少出现n次 |
- 贪婪模式和非贪婪模式
什么是贪婪模式:正则表达式默认是趋于最大长度的匹配,比如比如{3,5}
这个量词,那么js会默认先匹配5个。这就是贪婪模式。
既然有贪婪模式,那么肯定会有非贪婪模式,让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试,做法很简单,在量词后加上?
即可
//贪婪模式
'123456789'.match(/\d{3,5}/g); //["12345", "6789"]
//非贪婪模式
'123456789'.match(/\d{3,5}?/g); //["123", "456", "789"]
- 分组
Bryon{20}//表示n出现20次。
(Bryon){20}//表示Bryon出现20次
(Bryon|conser){20}//表示Bryon或者conser出现20次