首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex中的一个错误

Regex中的一个错误
EN

Stack Overflow用户
提问于 2012-09-01 03:40:06
回答 1查看 79关注 0票数 0
代码语言:javascript
复制
var text = "Price: 123 dollar."
text.replace(/((\d+\.?\d+?)|(\d{1,3}(\,\d{3})+)) *([a-zA-Z]+)/, function(a,b,c){
document.write(a+" | "+b+" | "+c);
return;
}

现在的输出是:123美元

但是我需要输出值是:123美元\ 123美元/美元

它适用于regex /\b((?:\d+.)?\d+) *(+)/

我搞不懂..。为什么b和c是一样的?!

Fix:解决方案是删除不必要的捕获组:

/((?:\d+.?\d+?)|(?:\d{1,3}(?:\,\d{3}+)*(+)/

谢谢@Mythril和cababunga

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-01 03:45:03

因为你创建了更多的捕获组。这意味着替换函数的更多参数,请尝试如下:

代码语言:javascript
复制
var text = "Price: 123 dollar."
text.replace(/((\d+\.?\d+?)|(\d{1,3}(\,\d{3})+)) *([a-zA-Z]+)/, function(a,b,c,d,e,f){
    document.write(a+" | "+b+" | "+f);}
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12224711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档