一、实例化RegExp
1、字面量
2、构造函数
字面量
var reg = /\bis\b/g;(\b单词边界)
构成函数
var reg = new RegExp('\bis\b','g');
g 全文检索
i 忽略大小写
m 多行搜索
二、元字符
正则表达式由两种字符类型组成:
1、原义文本字符
2、元字符(代表有特殊含义的非字母字符)
- ? $ ^ . | \ ( ) { } []
三、字符类
可以使用元字符[]构建一个简单的类([abc]表示将a或b或c归于一类,表达式可以匹配这类字符)
字符类取反([^abc])
四、范围类
可以使用[a-z]标识a到Z,类内部可以连写[a-zA-Z]
五、预定义类
. [^\r\n] 除了回车换行之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s 空白符
\S 非空白符
\w [a-zA-Z_0-9] 单词字符(数字、字母、下划线)
\W [^a-zA-Z_0-9] 非单词字符
^ 以开始
$ 以结束
\b 单词边界
\B 非单词边界
六、量词
?最多出现一次
- 至少出现一次
- 任意次
{n} 出现n次
{n,m} 出现n到m次
{n,} 至少出现n次
七、贪婪模式
默认贪婪模式 '12345678'.replace(/\d{3,6}/,'A')==>'A78'
非贪婪模式 '123456789'.replace(/\d{3,6}?/,'A')==>'AA78'
八、分组
小括号()达到分组效果
'a1b2c3d4'.replace(/([a-z]\d){3}/,'A')==>'Ad4'
或 |达到效果
反向引用
'2016-04-24'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'1/$3')
忽略分组 加?: (?:a)(b)
九、前瞻
向前检查是否符合断言
正向前瞻 exp(?=assert) 'a3fd123'.replace(/a-z/g,'A');==>"a3fA123"
负向前瞻(取反) exp(?!assert) 'a3fd123'.replace(/a-z/g,'A');==>"a3Ad123"
十、对象方法
reg.test('a') 测试传入字符串是否符合正则规则 符合返回true
reg.exec('a') 不符合返回null,符合返回数组[index,input] index--匹配文本第一个字符的位置 input--存放被检索的字符串
网友评论