惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
V
V2EX
量子位
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 【当耐特】
爱范儿
爱范儿
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
小众软件
小众软件
IT之家
IT之家
博客园_首页
博客园 - 聂微东
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗

博客园 - Ricebug

android SDK下载及中文API地址 怎么让我们自己开发的Android程序设为默认启动 在android 中开发java.net.SocketException: socket failed: EACCES (Permission denied) 报错 Eclipse 安装中文插件 Android开发环境搭建(jdk+eclip+android sdk) JS innerHTML Double Quotes [转载]分享8个超棒的免费高质量图标搜索引擎 平时技巧收集 ActionScript3.0平铺由外部加载的图片 - Ricebug - 博客园 截取中英文字符串 IE处理GIF动画图片onload事件的一个BUG BulkLoader类使用 Asp.net缓存动态图片 JS文件传参及处理技巧 [原创]jQuery动画弹出窗体支持多种展现方式 JQuery上传插件Uploadify使用详解及错误处理 [原创]jQuery插件处女座--超链接滑动动画 js页面定位,相关几个属性 全国哀悼日 网站变灰装(附代码)
正则表达式有无g参数时,test()结果的差异
Ricebug · 2011-06-20 · via 博客园 - Ricebug

有g参数的正则表达式:

var kk=/\w\w/g;

var kk=new RegExp("\\w\\w","g");

如果正则表达式有指定g参数全局匹配 , 则每次test()是依次获得下一个匹配。举例说明

var s="AABBCC";

var kk=/(\w\w)/g;

for(i=0;i<8;i++){

document.write ("<br>"+kk.test(s));

}

上面的代码结果是3个true,1个false,再3个true,再1个false。

true

true

true

false

第1次test匹配AA,第2次test匹配BB,第3次test匹配CC,第4次test找不到匹配,之后又从头重新开始:

第5次同第1次,第6次同第2次,┄┄。

所以会出现test有时候true,有时候false的情况。这里的正则表达式必须是指定了g参数的。

利用这一特点,可以用while循环遍历所有正则匹配:

var s="AA_123_BB_456_CC";

var kk=/((\w)\2)/g;

while(kk.test(s)){

document.write ("<br>"+RegExp.$1);

}

得到结果:

AA

BB

CC

如果正则表达式没有g参数,则每次test都是从头开始匹配,不存在上述问题。

没有g参数的正则表达式:

var kk=/\w\w/;

var kk=new RegExp(\\w\\w);测试:

var s="AABBCC";

var kk=/(\w\w)/;

for(i=0;i<8;i++){

document.write ("<br>"+kk.test(s));

}

上面的代码结果是8个true,每次都是AA匹配。

true

true

true

true

本文转自:无心的专栏