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
发布于 2012-09-01 03:45:03
因为你创建了更多的捕获组。这意味着替换函数的更多参数,请尝试如下:
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);}
);https://stackoverflow.com/questions/12224711
复制相似问题