php专区

 首页 > php专区 > 正则表达式 > Javascript中使用exec进行正则表达式全局匹配时的注

Javascript中使用exec进行正则表达式全局匹配时的注

分享到:
【字体:
导读:
          在 Javascript 中使用 exec 进行正则表达式全局匹配时,有一个非常容易犯的错误,这是因为 exec() 在全局模式下的行为稍微有点复杂...

本文就是介绍在使用 Javascript 中使用 exec 进行正则表达式全局匹配时的注意事项。
先看一下常见的用法:
复制代码 代码如下:



接下来看一下全局模式下的诡异事件:
复制代码 代码如下:



第二个语句并没有返回期望的结果,而是返回了 null ,这是因为:
在全局模式下,当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把正则表达式对象的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。
下面是正常的全局模式下的匹配方式:
复制代码 代码如下:



从上面的代码我们可以看到,之所以出现第二段代码中的问题,影响因素是 lastIndex ,所以我们可以通过将 lastIndex 手动置 0 的方式来解决这个问题。
复制代码 代码如下:



总结:
在全局模式下,如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0。
分享到:
js用正则表达式控制价格输入实现代码_正...
用正则表达式控制价格输入 实用技巧:用正则表达式控制价格输入 销售价[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
正则表达式 匹配至少有一个非空白字符并...
chinmo 逆向思维解决方案 复制代码 代码如下: /** * 至少有一个非空白字符并且不超过6个字符的正则表达式 * * 作者:chinmo * 整理:http://www.CodeBit.cn * 来源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#r_55136904 */ var pattern = /^[\s]{0,}$|^[\w\s]{7,}$/g; var str =...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……