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倍にすることによってあなたのバックスラッシュから逃げる必要があります。