<html>
<head>
<title>exec()方法应用</title>
<script language = "JavaScript">
var myString="aaa 111 bbb 222 ccc 1111 222ddd";
var regex = /111/; //创建正则表达式对象
var array=regex.exec(myString);
if (array){
var str="找到了匹配子串!"+"\n返回数组的值为:"+array+"\n数组元素个数:"
+array.length+"\n被搜索的字符串为:"+array.input
+"\n匹配子串的开始位置为:"+array.index
+"\n匹配子串后面第一个字符的位置为:"+regex.lastIndex;
alert(str);
}
else{
alert("未找到匹配子串!!");
}
</script>
<body></body>
</html>
2.3 compile方法
语法格式为compile("pattern"[,"flags"])。该方法可以更换RegExp对象实例所使用的表达式模式,并将新的表达式模式编译为内部格式,从而使以后的匹配过程执行更快。如果要在循环中重复使用某个表达式,对其进行编译将使执行加速。但是,如果在程序中使用了任何其他表达式模式后,再使用原来编译过的表达式模式,则这种编译毫无 益处。
2.4 综合举例
代码2.2是对RegExp对象的综合举例,认真分析代码及其运行结果,可以更好地理解RegExp对象。
代码2.2 RegExp对象的使用:2.2.htm
复制代码 代码如下:
<script language="javascript">
var strSrc = "xxa1b01c001yya2b02c002zz";
var re = /a(\d)b(\d{2})c(\d{3})/gi;
var arr, count = 0;
while ((arr = re.exec(strSrc)) != null)
{
displayResult();
}
function displayResult()
{
document.write("<p>这是用正则表达式/" + re.source + "/gi对字符串<br>""
+ RegExp.input + ""进行第" + (++count) + "次搜索的结果:<br>");
document.write("RegExp.index为" + RegExp.index + "<br>");
document.write("RegExp.lastIndex为" + RegExp.lastIndex + "<br>");
document.write("RegExp.lastMatch为" + RegExp.lastMatch + "<br>");
document.write("RegExp.lastParen为" + RegExp.lastParen + "<br>");
document.write("RegExp.leftContext为" + RegExp.leftContext + "<br>");
document.write("RegExp.rightContext为" + RegExp.rightContext + "<br>");
document.write("RegExp.$1为" + RegExp.$1 + "<br>");
document.write("RegExp.$2为" + RegExp.$2 + "<br>");
document.write("RegExp.$3为" + RegExp.$3 + "<br>");
document.write("RegExp.$4为" + RegExp.$4 + "<br>");
document.write("arr.index为" + arr.index + "<br>");
document.write("arr.input为" + arr.input + "<br>");
document.write("arr.lastIndex为" + arr.lastIndex + "<br>");
document.write("返回数组的元素个数为" + arr.length + "<br>");
document.write("返回数组的内容为["];
for(var i=0; i<arr.length; i++)
{
if(i < arr.length-1)
document.write(""" + arr[i] + "",");
else
document.write(""" + arr[i] + "")</p>");
}
}
</script>
您可能感兴趣的文章: