字面量
- 匹配其中一个is
var reg = /\bis\b/g; //\b表示单词边界
- 替换下列字符串中的is 为IS
var str = ‘hi is a boy ,this is a dog’
var str.replace(reg,’IS’);//注意如果reg 后面不是/g,不是全局匹配的话,只会替换第一个is
构造函数
- var reg = new RegExp (‘\bis\b\,g);
注意 在js 中\ 是需要转义的
修饰符
g: global 全文匹配,不添加g,则找到第一个满足条件的停止
i:ignore case 忽略大小写
m 多行搜索
元字符
愿义文本字符 : a,b,c…
元字符:非字母字符;
[abc] :表示有a或者b或者c都可以,就是a或者b或者c字符取反
[^abc] :!a | !b|!c
范围类
1) [a-zA-Z] a到z,A-Z的任意字符
2) [0-9] 表示0-9- 预定义类
1) . 除了回车和换行所有的字符
2) [\d] 数字5) \w 数字,字母,下划线 边界字符
3) [\D] 非数字字符
4) \s 空白符1) \b 单词边界
2) ^ 开始
3) $ 结束
4) \B 非单词边界量词
? 出现一次或者0次
- 一次或多次
- 任意次
; { n} n次
{n,m} n-m次
{n,} 至少n次
贪婪模式(默认)
- 尽可能多的匹配
例子: ‘123456789’.replace(/\d{3,6}/g,’X’)X789 尽可能多的匹配多的 为 6
非贪婪模式 (在量词后面加上? 号}
例子: '123456789'.replace(/\d{3,6}?/g,'X')
XX789 尽可能多的匹配多的 为 3
分组
boy 这个单词重负3次 ,使用() // (boy){3}
或 | ; ab(c|d)ef //abced | abdef
反向引用: 例子: 2015-12-25 变成 12/25/2015
‘2015-12-25’.replace(/(\d{4})-(\d{2})-(\d{2})/g,’$2/$3/$1’)
忽略分组 (在分组中加 ?: )
前瞻
- 正向前瞻 exp(?=assert) 满足exp 正则同时,还要看后面满足assert
- 负向前瞻 exp(?!assert) 满足exp ,看前面不满足assert 才可