Javascript正则表达式继续返回false

时间:2016-08-15 04:23:20

标签: javascript regex node.js

我在Javascript中使用正则表达式时遇到问题。 我需要从String中检索IP地址。 我用regex101.com测试了我的正则表达式,一切正常。

这是我的正则表达式:

var regex = new RegExp('(\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b:[0-9]+)|(localhost:[0-9]+)', 'i');

这是我的代码片段

console.log(regex.test('127.0.0.1:8080/test'));

结果始终为false。

我尝试了几种方法,string.match,regex包v0.1.1。

我有什么遗失的吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

问题在于你没有逃脱反斜杠。

var regex = new RegExp('(\\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\\b:[0-9]+)|(localhost:[0-9]+)', 'i');

console.log(regex.test('127.0.0.1:8080/test'));
> true

这里的根本问题是反斜杠作为转义字符具有特殊含义,对于JavaScript 都是RegExp。

因此,当JavaScript看到您的'\b'时,它会将其解释为转义字符 - 在这种情况下是退格字符。这个解释在之前发生它到达RegExp引擎。

所以,你需要通过加倍来逃避你的反斜杠。