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

时间:2012-07-25 11:57:44

标签: regex

我也把它看作+ $。

我正在使用

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

将10000转换为10,000等。

我想我理解其他一切:

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

2 个答案:

答案 0 :(得分:7)

我认为你有点误读了它:

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

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

(?=(\d{3})+

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

(\d{3})+(?!\d)

(?= ... )范围内,这是零宽度前瞻断言 - 这是一种很好的方式,可以说内部的内容应该遵循我们目前为止所匹配的内容,但我们不知道实际上消耗它。

(?!\d)表示\d(即数字)应该,所以总计:

  • (\d)找到并抓取一个数字。
  • (?=(\d{3})+(?!\d))声明应该跟随一个或多个三位数字组,但它们不应该有其他数字跟随它们。

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

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

答案 1 :(得分:1)

?!表示否定前瞻,用于匹配未跟随其他内容的内容,在您的情况下为数字