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
但我需要输出: 123美元| 123 |元
适用于正则表达式/ \ b((?:•d +。)?\ dd +)*([a-zA-Z] +)/
无法弄清楚..为什么b和c是一样的?!
修复:解决方案是删除不必要的捕获组:
/((的 \ d + \ d +)|(的:????? \ d {1,3}(的: \,\ d {3})+))*([a-zA-Z] +)/
感谢@Mythril和@cababunga
答案 0 :(得分:1)
因为您创建了更多捕获组。这意味着更换函数的参数更多,试试这个:
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);}
);