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

推荐订阅源

博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
小众软件
小众软件
The Cloudflare Blog
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
美团技术团队
WordPress大学
WordPress大学
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
GbyAI
GbyAI
B
Blog
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗

博客园 - 天山雪王

[ubuntu]安装vmware时找不到c header files的小问题 linux tar命令【转】 ubuntu安装配置方法【转】 什么是 EXIF 我认为比较经典的cookie欺骗的文章,还附带nc提交和WinSock Expert基本用法。原作者---海洋---- 网页wmp可视化效果 排序 高亮关键字 正则表达式不包含align该怎么写 JS检查限制字符,单词个数 Javascript的caller,callee,call,apply概念 innerHTML中的JS运行问题 几个比较好的图片播放代码一 几个比较好的图片播放代码二 IE里的探索之创建具有良好行为的自定义元素(htc,behavior) 网页代码常用小技巧 干掉不让frame的网页 Windows附带的计算器的错误 PS后期处理:怎么样让MM的脸更美白通透
[js]删除以 [ 开始以 ]结尾且不含:内容
天山雪王 · 2006-12-23 · via 博客园 - 天山雪王

转自:http://bbs.blueidea.com/thread-2704718-1-1.html

<textarea id="aa" cols=50 rows=10></textarea>
<textarea id="bb" cols=50 rows=10></textarea>
<script>
var str="如何利用JS实现:删[2[23[526j[52i[58865[526]jkku]j]k]25]5]除文章[1]中[2]所有的以\"[\"开始\"]\"结束并且其中不含有[有':']的内容?";
var tmp=str;
var reg=/\w*\[[^:]*\]\w*/;
var c=0;

//alert(reg.test(str));alert(reg.test(str));alert(reg.test(str));alert(reg.test(str));

while(reg.test(tmp)){
//alert("已循环"+ ++c+"次");
tmp=tmp.replace(/\[[^:\[\]]*\]/g,"");
}

aa.value
=str;
bb.value
=tmp;
</script>

+++++++++++++
不是reg.test改变了str,而是reg.test改变了reg的内部状态
像这样的:
alert(/\w*\[[^:]*\]\w*/g.test(str));
alert(/\w*\[[^:]*\]\w*/g.test(str));
alert(/\w*\[[^:]*\]\w*/g.test(str));
alert(/\w*\[[^:]*\]\w*/g.test(str));
就一直会有确定的结果,因为每一句里的正则表达式对象都是独立的

虽然没看到有正式的资料,但我估计是这样的:
加了全局标志的正则对象在test时会记录成功匹配的位置,下次调用test,会从该位置继续
下面两段代码的执行结果可以证明这一点:


 提示:您可以先修改部分代码再运行


 提示:您可以先修改部分代码再运行