RegExp对象定义了两个用于模式匹配的方法,它们是exec()和test()。
exec()它对一个制定的字符串执行一个正则表达式匹配,如果没有找到任一个匹配,它将返回NULL,否则返回一个数组,这个数组的第一个元素包含的是与争着表达式相匹配的字符串,余下的所有元素包含的是匹配的各个分组。而且,正则表达式对象的index属性还包含了匹配发生的字符的位置,属性input引用的则是被检索的字符串。
<html>
<head>
<title>Example-10.3 从身份证号码中获取出生年月日</title>
</head>
<body>
<script type="text/JavaScript">
<!--
//从身份证号码中获取出生年月日
str="420105198203091614";
var re=//d{6}([12]/d{3})([01]/d)([0123]/d)/d{4}/;
var id=re.exec(str);
//exec用字符串参数去匹配模式,得到一个数组,第一个元素是匹配的表达式本身
//第二个元素开始是正则表达式中对应的括号(分组)中的匹配项
//即id[1]匹配([12]/d{3})
//id[2]匹配([01]/d)
//id[3]匹配([0123]/d)
document.write("ID为:"+id[0]+"<br/>");
document.write("出生年月为日为:"+id[1]+"-"+id[2]+"-"+id[3]);
-->
</script>
</body>
</html>
test()
<html> <head> <title>Example-10.4 使用test()方法遍历字符串</title> </head> <body> <script type="text/JavaScript"> <!-- var str1 = "JavaScript is not Java"; var str2 = "JavaScript is easy and JavaScript is fun. I love JavaScript!"; var exp = /[Jj]ava(Script)?/g; //匹配Java、java、JavaScript、javaScript的正则表达式 var i = 0; var lastIndex = 0; while(exp.test(str1)) //用while循环去遍历匹配str1,一共可以找到两个匹配项,一个是JavaScript,一个是Java { i++; lastIndex = exp.lastIndex; //记下最近匹配到的lastIndex } //最后循环结束时,exp.lastIndex会自动清零 document.write(i + " matchs, last match index:" + lastIndex + "<br/>"); i = 0; while(exp.test(str2)) { i++; lastIndex = exp.lastIndex; //记下最近匹配到的lastIndex } document.write(i + " matchs, last match index:" + lastIndex + "<br/>"); //下面这一句不是必要的,因为循环结束时会自动清零 exp.lastIndex = 0; --> </script> </body> </html>