美文网首页
js正则exec方法的一个诡异现象

js正则exec方法的一个诡异现象

作者: 飞鱼YE | 来源:发表于2019-05-28 16:59 被阅读0次

    偶然发现,当一直执行exec方法时,一遍匹配失败,一遍匹配成功,这样循环输出。

    image.png

    《javascript高级程序设计》中有这样一句话:

    正则表达式在不设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。而在设置全局标志的情况下,每次调用exec()则都会在字符串中继续查找新匹配项。

    调用全局的RegExp对象的exec()时,它会在RegExp实例的lastIndex属性指定的字符处开始检索字符串。当exec()找到了与表达式相匹配的文本时,在匹配后,它将把RegExp实例的lastIndex属性设置为匹配文本的最后一个字符的下一个位置。可以通过反复调用exec()方法来遍历字符串中的所有匹配文本。当exec()再也找不到匹配的文本时,它将返回null,并把lastIndex属性重置为0。

    结论:

    1. 同一正则表达式,在全局匹配模式下,每次实例的lastIndex属性的值为匹配文本最后一个字符的下一个位置。
    2. 当exec()再也找不到匹配的文本时,它将返回null,并把lastIndex属性重置为 0。

    相关文章

      网友评论

          本文标题:js正则exec方法的一个诡异现象

          本文链接:https://www.haomeiwen.com/subject/ynidtctx.html