如何在Javascript中编写这个检测regexp的数字?

时间:2013-02-07 19:38:39

标签: javascript regex perl

这与Perl兼容的regexp(取自https://stackoverflow.com/a/4824952/377920)的外观如下:

(?:(?<!\d)\d{1,3}(?!\d))

然而,显然Javascript缺少一些正则表达式功能,所以这不起作用。

我正在尝试匹配1-3个长连接的数字,两端可能有非白色字符。

例如“Road 12A55,10020”将匹配12和55。

4 个答案:

答案 0 :(得分:4)

你是对的,JavaScript不支持lookbehinds。

看起来您正在尝试检测不超过3位数的序列。根据周围环境的不同,您可以改为使用它:

/(?:^|\D)\d{1,3}(?:\D|$)/

答案 1 :(得分:4)

您可以在不使用lookbehinds的情况下重写表达式 - 只需确保获得第1组:

/(?:^|\D)(\d{1,3})(?!\d)/

答案 2 :(得分:2)

Javascript不支持look-behinds,这就是你的正则表达式不起作用的原因。

你可以试试这个选择: -

/(?:^|\D)(\d{1,3})(?!\d)/

获取group 1

答案 3 :(得分:1)

返回12和55:

var output = 'Road 12A55, 10020'.replace(/D+|\d{4,}/g, ' ').match(/\d+/g)

alert(output)