REGEXP对象
JavaScript通过内置对象RegExp支持正则表达式,有两种方法实例化RegExp对象
- 字面量
var reg = /\bis\b/g;
- 构造函数
var reg = new RegExp('\\bis\\b','g');
修饰符
g :global 全文搜索,不添加搜索到第一个匹配停止
i :ignore case 忽略大小写,默认大小写敏感
m :multiple lines 多行搜索
元字符
- 原义文本字符
- 元字符(含有特殊含义的非字母字符)
- 特殊含义的
* + ? $ ^ . | \ ( ) { } [ ]
相关
- >
[]
构建一个简单的类:[abc]
代表字符a或b或c - >
^
反向类/负向类:[^abc]
代表不是字符a或b或c - >
[a-z]
范围类,可以连写[a-zA-Z]
- 预定义类
.
等价于[^\r\n]
,除了回车、换行之所的所有字符\d
等价于[0-9]
,数字字符\D
等价于[^0-9]
,非数字字符\s
等价于[\t\n\x0B\f\r]
,空白符\S
等价于[^\t\n\x0B\f\r]
,非空白符\w
等价于[a-zA-Z_0-9]
,字母数字下划线\W
等价于[^a-zA-Z_0-9]
,非单词字符
- 边界
^
以xxx开始$
以xxx结束b
单词边界B
非单词边界
- 量词
?
出现零次或一次(最多出现一次)+
出现一次或多次(最少出现一次)*
出现零次或多次(任意次){n}
出现n次{n,m}
出现n到m次{n,}
最少出现n次
- 贪婪模式:尽可能多的匹配
- 非贪婪模式:尽可能少的匹配
- 在量词后加
?
即可
- 在量词后加
- 分组:使用
()
分组 - 或:使用
|
- 反向引用:
$1$2$3
代表分组内的内容 - 前瞻:就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反
- 正向前瞻:
exp(?=assert)
- 负向前瞻:
exp(?!assert)
- 正向前瞻:
方法
test(str)
exec(str)