正则表达式中的+(?!\ d)是什么意思?

sea*_*cob 5 regex

我也把它看作+ $.

我在用

$(this).text( $(this).text().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") );
Run Code Online (Sandbox Code Playgroud)

将10000转换为10,000等

我想我理解其他一切:

  • (\ d) - 找到号码
  • (?=\d {3}) - 如果后跟3个数字
  • '+' - 第一次找到后不要停止
  • (?!\ d) - 从最后一个号码开始?
  • / g - 整个字符串
  • ,"$ 1," - 用self和逗号替换数字

Ash*_*she 7

我想你有点误读它:

  • (?=\d {3}) - 如果后跟3个数字

请注意,正则表达式实际上是:

(?=(\d{3})+
Run Code Online (Sandbox Code Playgroud)

即你错过了一个开放的paren.以下全部内容:

(\d{3})+(?!\d)
Run Code Online (Sandbox Code Playgroud)

(?= ... )这是一个零宽度前瞻断言 - 一种很好的方式,说内部的东西应该遵循我们迄今为止匹配的东西,但我们实际上并没有消耗它.

(?!\d)说一个\d(即数字)应遵守,所以在总:

  • (\d) 找到并捕获一个数字.
  • (?=(\d{3})+(?!\d)) 声明应该跟随一个或多个三位数的组,但是它们不应该在它们之后还有另一个数字.

我们替换为"$1,",即捕获的第一个数字和逗号.

因此,我们将逗号放在后面有三位数的数字后面,这是一个很好的方式来说我们将逗号添加为千位分隔符!