它不是actually从右到左阅读。真正发生的事情是它反复应用(\d+)(\d{3})
模式(通过 while 循环)并替换,直到它不再与模式匹配。换句话说:
迭代 1:
x1 = 83475934.89
x1.replace((\d+)(\d{3}), '$1' + ',' + '$2');
x1 = 83475,934.89
迭代 2:
x1 = 83475,934.89
x1.replace((\d+)(\d{3}), '$1' + ',' + '$2');
x1 = 83,475,934.89
迭代 3:
x1 = 83,475,934.89
x1.replace((\d+)(\d{3}), '$1' + ',' + '$2');
// no match; end loop
Edit:
另外,1 美元和 2 美元是什么意思?
这些是对匹配组的反向引用(\d+)
and (\d{3})
分别。
这是学习正则表达式实际工作原理的一个很好的参考:
http://www.regular-expressions.info/quickstart.html http://www.regular-expressions.info/quickstart.html