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 dollar | 123 | 123Regex中的一個錯誤
但我需要的輸出是:123元| 123 |美元
它的工作原理與正則表達式/\b((?:\d+.)?\d+)*([A-ZA-Z] +)/
想不通出來..爲什麼b和c是相同的?!
修復:將溶液以除去不必要的捕捉組:
/((: \ d + \ d +)|(:???? \ d {1,3}( : \,\ d {3})+))*([A-ZA-Z] +)/
由於@Mythril和@cababunga
'/(\d+\.?\d+?|\d{1,3}(?:\,\d{3})+) *([A-ZA-Z] +)/' – nhahtdh
你可以僅僅刪除分組像什麼,我在上面的意見建議 - 在分組有沒有意義。 – nhahtdh