当前位置:  编程技术>其它

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

    来源: 互联网  发布时间:2014-10-17

    本文导语:  本文就是介绍在使用 Javascript 中使用 exec 进行正则表达式全局匹配时的注意事项。 先看一下常见的用法: 代码如下: var pattern = /http://([^/s]+)/; alert(pattern.exec('http://www.codebit.cn')); // http://www.codebit.cn,www.codebit.cn alert(pattern.exec('ht...

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


var pattern = /http://([^/s]+)/;
alert(pattern.exec('http://www.codebit.cn')); // http://www.codebit.cn,www.codebit.cn
alert(pattern.exec('http://YITU.org')); // http://YITU.org,YITU.org
// 也可以直接写成 /http://([^/]+)/.exec('http://www.codebit.cn');


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


var pattern = /http://([^/s]+)/g; // 使用了 g 修饰符
alert(pattern.exec('http://www.codebit.cn')); // http://www.codebit.cn,www.codebit.cn
alert(pattern.exec('http://YITU.org')); // 并没有返回期望的 http://YITU.org,YITU.org ,而是返回了 null


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


var pattern = /http://([^/s]+)/g;
var str = "CodeBit.cn : http://www.codebit.cn | YITU.org : http://YITU.org";
var result;
while ((result = pattern.exec(str)) != null) {
alert("Result : " + result + " LastIndex : " + pattern.lastIndex);
}
//Result : http://www.codebit.cn,www.codebit.cn LastIndex : 34
//Result : http://YITU.org,YITU.org LastIndex : 67


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


var pattern = /http://([^/s]+)/g; // 使用了 g 修饰符
alert(pattern.exec('http://www.codebit.cn')); // http://www.codebit.cn,www.codebit.cn
pattern.lastIndex = 0;
alert(pattern.exec('http://YITU.org')); // http://YITU.org,YITU.org


总结:
在全局模式下,如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0。

    
 
 

您可能感兴趣的文章:

  • Javascript里的两种使用正则的方法
  • JavaScript正则表达式库 XRegExp
  • JavaScript 的正则表达式编辑器 Scriptular
  • javascript 正则修正符
  • javascript下一个还原html代码的正则
  • javascript判断中文的正则
  • javascript 小时:分钟的正则表达式
  • javascript下正则匹配百分比的代码
  • 用Javascript正则实现url链接的解析类
  • javascript利用正则快速找出两个字符串的不同字符
  • javascript用正则表达式把1234567890替换为abcdefghij
  • JavaScript正则表达式之后向引用实例代码
  • JavaScript 去前后全脚半脚空格的正则
  • Javascript lastIndex 正则表达式的一个疑惑
  • javascript 正则 判断是否是数字的脚本
  • javascript正则表达式容易被忽略的小问题整理
  • JavaScript正则表达式验证中文实例讲解
  • javascript中正则表达式反向引用示例介绍
  • javascript中匹配价格的正则表达式
  • JavaScript基于正则表达式的数字判断函数
  • JavaScript表达式语言 Esel
  • javascript之正则表达式基础知识小结
  • JavaScript 使用正则表达式进行表单验证的示例代码
  • JavaScript常用的正则表达式表单验证代码
  • javascript 数字的正则表达式集合
  • javascript 正则表达式用法 小结
  • JavaScript 正则表达式 验证整数、小数、实数、有效位小数最简单
  • javascript正则表达式基础篇
  • [js]用JAVASCRIPT正则表达式限制文本字节数的代码
  • PHP和javascript常用正则表达式及用法实例
  • javascript中基于replace函数的正则表达式语法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用JavaScript实现全局替换,解决$等特殊符号的难题[
  • HTML网页中的javaScript自动跳转方法介绍及javaScript自动跳转代码示例
  • Javascript 游戏引擎 cocos2d javascript
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • JavaScript的OAuth开发包 OAuth in JavaScript
  • javascript 添加到收藏夹和书签代码示例
  • Javascript 调试插件
  • javascript eval换成document.write 显示原型
  • JavaScript图表 JScharts
  • 通过javascript库JQuery实现页面跳转功能代码
  • JavaScript 开发环境 UltraREPL
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • JavaScript 模板引擎 templayed.js
  • JavaScript实现页面跳转的几种方法(参考代码)
  • Pretty Beautiful Javascript
  • JavaScript中的消息框(警告框,确认框,提示框)语法
  • JavaScript 微处理器 Espruino
  • JavaScript InfoVis Toolkit
  • JavaScript 调试工具 JSDT
  • JavaScript图表组件 dhtmlxChart
  • javascript矩阵运算库 Sylvester
  • JavaScript开发插件 JSEclipse


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3