1);//outputs "123456789" 还可以直接在定义分组的表达式中包含反向引用。如 /dogdog/ === /(dog)\1/ .3:反向引用可以用在String对象的replace()方法中: var sString = "1234 56789"; var reg = /(\d{4}) (\d{4})/; var sNew = sString.replace(reg,"
候选操作符,“|”:类似于或操作。
var reg = /badword|otherbadword/gi;
var sString = "this is a string using badword1 and badword2";
var sNew = sString.replace(reg,"****");
alert(sNew);//outputs "this is a string using ****1 and ****2";//屏蔽敏感字词
创建反向引用的分组称之为捕获性分组,而非捕获性分组则无需存储结果;非捕获性分组创建方法:(?: /*..*/ )
String.prototype.stripHTML = function(){var reg=/<(?:.|\s)*?>/g;return this.replace(reg,"");}//剔除字串中的HTML标签
var sTest = "<b>this is a test string</br>";
alert(sTest.stripHTML());//outputs "this is a test string"
属性lastIndex表示正则表达式在某个字符串中停止之前,查找了多远:
var sString="bbq is short for barbecue";
var reg=/b/g;
reg.exec(sString);
alert(reg.lastIndex);//outputs "1"
reg.exec(sString);
alert(reg.lastIndex);//outputs "2"
reg.exec(sString);
alert(reg.lastIndex);//outputs "18"
reg.exec(sString);
alert(reg.lastIndex);//outputs "21"
可以自行设定lastIndex;
静态的RegExp属性:
长名 短名 描述
input $_ 最后用于匹配的字符串(传递给exec()或test()的字符串)
lastMatch $& 最后匹配的字符
lastParen $+ 最后匹配的分组
leftContext $` 在上次匹配的前面的字串
multiline $* 用于指定是否所有的表达式都使用多行模式的布尔值
rightContext $' 在上次匹配之后的字串
这些属性可以告诉你,关于刚使用exec()或test()完成的匹配的一些特定信息
var sString = "this has been a short,short summer";
var reg = /(s)hort/g;
reg.test(sString);
alert(RegExp.input); //outputs "this has been a short,short summer"
alert(RegExp.leftContext); //outputs "this has been a"
alert(RegExp.rightContext); //outputs ", short summer"
alert(RegExp.lastMatch); //outputs "short"
alert(RegExp.lastParen); //outpus "s"
日期验证函数:
function isValidDate(str){ var reg=/(?:0[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/; return reg.test(str);}
alert(isValidDate("5/5/2004")); //outputs "true"
alert(isValidDate("5/13/2004")); //outputs "false"
电子邮件地址验证函数:
function isValidEmail(str){ var reg=/^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/; return reg.test(str);}
alert(isValidEmail("ake87#126.com")); //outputs false