あなたがIPv4アドレスのリストを持っていて、それをフィルタリングしたい場合は、派手な検証スタイルの正規表現の必要はありません。ここにあなたのケースのために修正さBen Mc Cormick's functionです:
function checkIsIPV4(entry) {
if (entry === "0.0.0.0" || entry === "255.255.255.255") {
return false;
}
var blocks = entry.split(".");
if(blocks.length === 4) {
return blocks.every(function(block) {
return parseInt(block,10) >=0 && parseInt(block,10) <= 255;
});
}
return false;
}
var strs = ["100.1.2.3", "0.0.0.0", "0.0.0.1", "255.255.255.254", "255.255.255.255", "255.255.255.256"];
for (var s of strs) {
document.body.innerHTML += s + ": " + checkIsIPV4(s) + "<br/>";
}
あなたが本当にすべてのゼロを除いたすべてのIPアドレスとすべての255
Sと一致します検証スタイルの正規表現を使用する必要がある場合:
var re = /^(?!(?:0(?:\.0){3}|255(?:\.255){3})$)([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$/;
regex demo
はじめに、y ouは正規表現のリテラルで単一のものを必要とする間に二重のバックスラッシュを持っていました。 0.0.0.0
と255.255.255.255
を禁止するのは負の先読み(?!(?:0(?:\.0){3}|255(?:\.255){3})$)
です。
2つの '\\ d'があることに注意してください。' \ d'にする必要があります。 'RegExp'コンストラクタを使う必要はありません。 2 [0-4] \ d | 25 [0-5] \。([01]?\ d \ d?2 [0-4] ([01]?\ d \ d?| 2 [0-4] \ d | 25 [0-5])\。([01]?\ d \ d ?| 2 [0-4] \ d | 25 [0-5])$ '](https://regex101.com/r/dS4rX7/1)。それは単にタイプミスですか? –
これは0.0.0.0を許可します0.0.0.0と255.255.255.255をブロックしたい – user544079
これは唯一追加された要件ですか、それとも後で "buts"を追加するのですか?あなたの質問を更新してください。 –