このプログラムは、与えられたIPアドレスがIPv4またはIPv6形式であるかどうかを検証します。正規表現を使用して、アドレスの形式が正しいかを判断します。
目次
IPアドレス検証プログラム
実行例
抽出前のIPアドレスリスト: “192.168.1.1, 255.255.255.255, 0.0.0.0, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, invalid_ip”
JavaScriptとHTMLコード
<div id="output"></div>
window.onload = function() {
const ipAddresses = [
"192.168.1.1",
"255.255.255.255",
"0.0.0.0",
"2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"invalid_ip"
];
const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
const ipv6Regex = /^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^(?:[0-9a-fA-F]{1,4}:){1,7}:$|^(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}$|^(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}$|^(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}$|^(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}$|^(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}$|^[0-9a-fA-F]{1,4}:(?::[0-9a-fA-F]{1,4}){1,6}$|^:((?::[0-9a-fA-F]{1,4}){1,7}|:)$|^fe80:(?::[0-9a-fA-F]{0,4}){0,4}::/;
let results = [];
ipAddresses.forEach(ip => {
const isValidIPv4 = ipv4Regex.test(ip);
const isValidIPv6 = ipv6Regex.test(ip);
results.push(`${ip} は IPv4: ${isValidIPv4}, IPv6: ${isValidIPv6}`);
});
document.getElementById('output').innerHTML = results.join('
');
};
このプログラムの解説
このプログラムでは、配列に含まれるIPアドレスをそれぞれ検証しています。
- IPv4アドレスは、0から255までの数値を4つ持ち、各数値はドットで区切られています。
- IPv6アドレスは、16ビットのセグメントを8つ持ち、コロンで区切られています。
- 正規表現を使用して、形式が正しいかどうかを確認します。
使用したオブジェクトとメソッドについて
- RegExp.test(): 正規表現が文字列にマッチするかどうかを判断します。
- Array.forEach(): 配列の各要素に対して指定した関数を実行します。
- document.getElementById(): HTMLドキュメント内の要素を取得します。
- innerHTML: 要素のHTMLコンテンツを設定または取得します。
Arrayオブジェクト メソッドの機能一覧
Arrayオブジェクト メソッドの機能一覧 | JavaScript リファレンス
JavaScriptのArrayオブジェクトは、リストやコレクションの管理に使用されるグローバルオブジェクトです。以下に、Arrayオブジェクトのメソッドをインスタンスメソッドと静的メソッドに分け、アルファベット順にまとめています。 Arrayオブジェクトのインスタンスメソッド メソッド名 説明と注意点 Array.p...
RegExpオブジェクト メソッドの機能一覧
RegExpオブジェクト メソッドの機能一覧 | JavaScript リファレンス
JavaScriptのRegExpオブジェクトは、正規表現を使用して文字列のパターンを検出、操作するためのオブジェクトです。以下に、RegExpオブジェクトのメソッドをインスタンスメソッドと静的メソッドに分け、アルファベット順にまとめています。 RegExpオブジェクトのインスタンスメソッド メソッド名 説明と注意点 ...