正则表达式有两种创建方式
- 通过正则的构造函数创建对象
var reg1 = new RegExp(/\d{5}/);
console.log(reg1.test("我的编号是89757"));
//输出:true
- 通过字面量的方式创建
var reg2 = /\d{5}/;
console.log(reg1.test("我的编号是89757"));
//输出:true
注意:正则表达式的写法也有两种,一种是字符串形式,不过要注意转义符号“\”,一种是用“//”包含
1、var reg = /\d{5}/;
2、var reg = “\\d{5}”;
正则表达式的元字符:
- .:表示的是除\n以外,任意的一个字符
- []:表示的是范围,比如:
- [1-7] 表示的是1到7之间的任意的一个数字
- [a-z] 表示的是:所有的小写的字母中的任意的一个
- [A-Z] 表示的是:所有的大写的字母中的任意的一个
- [a-zA-Z] 表示的是:所有的字母的任意的一个
- [0-9a-zA-Z] 表示的是: 所有的数字或者是字母中的一个 注意:[]中出现的元字符是没有其意义的,如[.]:表示范围就是一个.,而不是除\n以外任意的一个字符
- |:表示或
- ():表示分组或提升优先级
- ([0-9])([1-5])([a-z]) 三组
- (()(())) 从最左边开始计算,最左边的做括号优先级最高
- [0-9]|([a-z])|[A-Z] 先计算(a-z)
限定符,也是元字符的一部分
- *:表示的是:前面的表达式出现了0次到多次,如:[a-z][0-9]*:表示0-9出现一次到多次
- +:表示前面的表达式出现了1次到多次
- ?:表示前面的表达式出现了0次到1次
- {}:表示前面的表达式出现的次数,如:
- {0,} 表示的是前面的表达式出现了0次到多次,和 *一样的
- {1,} 表示的是前面的表达式出现了1次到多次,和 +一样的
- {0,1} 表示的是前面的表达式出现了0次到1次,和 ?一样的
- {5,10} 表示的是前面的表达式出现了5次到10次
- {4} 前面的表达式出现了4次
- {,10} 错误的写法。。。。。。。
- ^: 表示的是以什么开始,或者是取非(取反),比如:^[0-9] 表示以数字开头,而[^0-9]表示非数字
- ^[a-z] 以小写字母开始
- [^0-9] 取反,非数字
- [^a-z] 非小写字母
- [^0-9a-zA-Z_] 特殊符号,和\W一样
- $:表示的是以什么结束,比如:[0-9][a-z]$ 必须以小写字母结束
- \d:数字中的任意一个
- \D 非数字中的一个
- \s 空白符中的一个
- \S 非空白符
- \w 非特殊符号
- \W 特殊符号
- \b 单词的边界
正则表达式中的模式
- 严格模式:^$组合,如:
- [a-z][0-9]:只要字符串中含有这个模式的就符合,如:a9,aa99,asd9,ca1
- ^[a-z][0-9]$:严格模式下只能是:a9,b1,c3
注意:正则表达式一般情况下都是非严格模式,即只要字符串中有符合正则表达式规则的,则匹配正确,要想使用严格模式,得以^开头,&结尾
- 全局模式:在/表达式/g,如:
var str = "abcbd";
console.log(str.replace(/b/,"e"));
//输出:aecbd //一般情况下,只会找到第一个符合的字符进行修改
console.log(str.replace(/b/g,"e"));
//输出:aeced //全局模式,把所有符合的字符进行修改
- 不分大小写模式:在/表达式/i,如:
var str = "aBcbdBeb";
console.log(str.replace(/b/ig,"e"));
//输出:aecedeee