/ / Javascript regex continua retornando false [duplicate] - javascript, regex, node.js

JavaScript regex continua retornando false [duplicate] - javascript, regex, node.js

Eu tenho um problema com o regex em Javascript. Eu preciso recuperar um endereço IP de uma String. Eu testei meu regex com regex101.com e tudo funciona bem.

Aqui está o meu regex:

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

E aqui está o trecho que tenho

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

O resultado é sempre falso.

Eu tentei vários métodos, string.match, o pacote regex v0.1.1 também.

Há algo que eu esteja perdendo?

Obrigado.

Respostas:

1 para resposta № 1

O problema é que você não escapou de suas barras invertidas.

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

O problema fundamental aqui é que a barra invertida tem um significado especial como um caractere de escape, tanto para JavaScript e para RegExp.

Então, quando o JavaScript vê seu "b", interpreta-o como um caractere de escape - neste caso, um caractere de retrocesso. Essa interpretação acontece antes ele chega ao mecanismo RegExp.

Então, você precisa escapar de suas barras invertidas, dobrando-as.