正则表达式的创建方式:
1、使用正则表达式自变量:/pattern/flag 脚本加载后即可得到编译,如果表达式不是变化的,用这种方式效率更高。
2、使用RegExp对象:new RegExp('pattern','flag'); 这种方式,在运行时编译,适用于事先不能确定表的式的规则。
两种创建方式的简单使用:
var str = 'bd12 er3rt4ui89 7 2 99'; // 得到字符串的数字
document.write(str.match(/\d+/g)); // 使用正则表达式子变量
var reg = new RegExp('\\d+','g'); // 使用RegExp对象
console.log(str.match(reg));
编写方式有:
简单模式(直接匹配给出的字符,如/abc/就匹配abc);
使用特殊字符(/ab*c/,匹配一个a,后面0个或多个b,一个c)。
字符串和RegExp的方法:
reg.exec() 返回匹配结果数组,不匹配则返回null,每执行一次就向后匹配一次,如果表达式有g选项进行全局搜索,则可以多次使用exec,下次的匹配从上次的结果开始。如果表达式中有括号,称为组匹配,返回结果中,第一个是整体匹配的结果,后面依次是没个括号匹配的结果。
reg.test() 返回true/false,表示是否匹配成功。
str.match(reg) 与reg.exec()相似,但是,如果使用g选项,则str.match()一次返回所有结果。
str.search(reg) 返回匹配成功的第一个位置,这和str.indexOf()的使用相类似,但是str.search(reg)使用更灵活,因为可以写正则表达式。
str.replace(reg,nwstr)方法不改变原字符串的值,返回的是一个新字符串。第一参数reg去匹配,第二个参数nwstr去替换。
var str1 = str.replace('d','A'); //将字符串中的第一个字符d替换成A var str2 = str.replace(/d/g,'B'); // 将字符串中的所有字符d替换成B
str.split(reg,[maxLength]) 用匹配的模式切割,第二个参数是限制返回结果的最大个数。如str.split(/\s+/,2),就表示以空格切割字符串,且返回结果的个数为2.