我也将其视为+$。
我在用
$(this).text( $(this).text().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") );
将 10000 转换为 10,000 等。
我想我理解其他一切:
- (\d) - 查找号码
- (?=\d{3}) - 如果后跟 3 个数字
- '+' - 第一次找到后不要停止
- (?!\d) - 从最后一个数字开始?
- /g - 整个字符串
- ,"$1," - 用自我和逗号替换数字
我也将其视为+$。
我在用
$(this).text( $(this).text().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") );
将 10000 转换为 10,000 等。
我想我理解其他一切:
我认为你有点误读了它:
- (?=\d{3}) - 如果后跟 3 个数字
请注意,正则表达式实际上是:
(?=(\d{3})+
即你错过了一个公开的paren。以下全部内容:
(\d{3})+(?!\d)
在 内(?= ... )
,这是一个零宽度的前瞻断言——这是一种很好的说法,里面的东西应该遵循我们迄今为止匹配的内容,但我们实际上并没有消费它。
(?!\d)
说一个(\d
即数字)不应该跟随,所以总共:
(\d)
找到并捕获一个数字。(?=(\d{3})+(?!\d))
断言应该跟随一组或多组三位数,但它们后面不应有另一个数字。我们替换为"$1,"
,即捕获的第一个数字和一个逗号。
结果,我们将逗号放在后面有三位数的倍数的数字之后,这是一种很好的说法,我们将逗号添加为千位分隔符!
?!
表示Negative lookahead,它用于匹配未跟随其他内容的内容,在您的情况下为数字