正则表达式定义方式
以字面量的形式来定义正则表达式
例如:匹配第一个bat或者cat,不区分大小写
var pattern = /[bc]at/i;
使用RegExp构造函数
它接收两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串。可以使用字面量定义的任何表达式,都可以使用构造函数来定义,还是以上面的例子为例:
var pattern = new RegExp("[bc]at",“i”);
注意:RegExp构造函数模式参数时字符串,所以再某些情况下要对字符进项双重转义。所有元字符都必须双重转义,如字面量模式为/\[bc\]at/,那么等价的字符串为"/\\[bc\\]at/"
查看所有元字符参考:《JavaScript RegExp 对象》
例子:
复制代码
var re = null,
i;
for(i=0; i < 10; i++){
re = /cat/g;
console.log(re.test(“catastrophe”));
}
for(i=0; i < 10; i++){
re = new RegExp(“cat”,“g”);
console.log(re.test(“catastrophe”));
}
复制代码
字符组合
[-] 从某个字符串范围中任意匹配一个字符
var regExp = /[a-z]/;//只要包含26个英文字母中的任意一个 都返回true
var regExp1 = /^[a-z]$/;//必须是26个英文字母中的任意一个 都返回true
var regExp2 = /[0-9]/;//只要包含0到9中的任意一个 都返回true
var regExp3 = /^[0-9]$/;//必须是0到9中的任意一个 都返回true
[^] 不包含指定范围内的字符 才返回true
//[-] 范围
var regExp = /^[a-zA-Z0-9]$/;//字符串只有a-z/A-Z/0-9间的任意一个 才返回true
//[^] ^在方括号内表示取反 不包含 不是
var regExp1 = /^[^a-zA-Z0-9]$/;//字符串不能包含a-z/A-Z/0-9间的任意一个 才返回true
打印结果都为10个true
扩展:正则表达式中的RegExp.$1
RegExp 是javascript中的一个内置对象。为正则表达式。
RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个子匹配(以括号为标志)字符串,以此类推,RegExp.2, RegExp.3, …RegExp.$99总共可以有99个匹配。
例如:
复制代码
var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配)
r.exec(‘1985-10-15’);
s1=RegExp.$1;
s2=RegExp.$2;
s3=RegExp.$3;
console.log(s1+" “+s2+” "+s3)//结果为1985 10 15
复制代码
正则表达式方法
RegExp对象的exec()方法
该方法是专门为捕获组而设计的,其接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。返回的数组虽然是Array的实例,但是包含两个额外的属性:index