javascript 简单的正则表达式问题?谢谢了

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:18:47
代码如下:
<html>
<head>
<script type="text/javascript">

var str = "Hello";
var patt = new RegExp("Hello","g");
var result;

while ((result = patt.exec(str)) != null) {
document.write(result);
document.write("<br />");
document.write(result.index);
document.write(result.lastIndex);
}
</script>
</head>
<body>
</body>
</html>
输出:
Hello
05
我认为要么第一个数字为0,第二个数字为4,要么第一个数字为1,第二个为5。谁能帮我解释一下啊??谢谢了

lastIndex 属性是基于零的,也就是说,第一个字符的索引是零。其初始值为 -1,不论何时产生一个成功匹配,它的值都被修改。

lastIndex 属性被 RegExp 对象的 exec 和 test 方法,以及 String 对象的 match、replace、和 split 方法修改。

下面的规则应用于 lastIndex 的值:

* 如果还没有匹配,则 lastIndex 被设置为 -1.
* 如果 lastIndex 比字符串的长度大,则 test 和 exec 失败,并且 lastIndex 被设置为 -1。
* 如果 lastIndex 等于字符串的长度,且模式与空字符串匹配,则正则表达式匹配。否则,匹配失败并且 lastIndex 被重置为 -1。
* 否则,lastIndex 被设置为紧接最近的匹配的下一个位置。