/ / Javascript regexがfalseを返し続ける[複製] - javascript、regex、node.js

Javascriptの正規表現はfalseを返すようになる[重複] - javascript、regex、node.js

Javascriptの正規表現に問題があります。 文字列から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"));

結果は常に偽です。

私はいくつかの方法を試した、string.match、正規表現パッケージv0.1.1も。

足りないものはありますか。

ありがとうございました。

回答:

回答№1は1

問題は、バックスラッシュを回避できなかったことです。

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エンジンに到達します。

だから、あなたはそれらを2倍にすることによってあなたのバックスラッシュから逃げる必要があります。