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+.)?\d+) *([a-zA-Z]+)/
想不通..为什么b和c是一样的?!
修复:解决方案是删除不必要的捕获组:
/(( ?: \d+.?\d+?)|( ?: \d{1,3}( ?: \,\d{3})+)) *([a-zA-Z]+)/
谢谢@Mythril 和@cababunga