たれながし.info

とあるITエンジニアの備忘録

PowerShellで文字列がIPアドレス(IPv4)か判定する方法

PowerShellで文字列がIPアドレスIPv4)か判定する方法です。

正規表現を使う方法

^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$



ということで、下記でIPv4アドレスか判断できる

> $str -match "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"



いくつかの文字列でテストしてみる。

# テストスクリプト
$list = @(
    '192.168.0.24'
    '10.0.0'
    '256.1.0.3'
    '211.255.1.3'
)

$regex = "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"

foreach($ip in $list){
    $bool = $ip -match $regex
    Write-Host "${ip}: ${bool}"
}

# 結果
192.168.0.24: True
10.0.0: False
256.1.0.3: False
211.255.1.3: True

その他の方法

型変換を使って判定することもできるらしい。
mtgpowershell.blogspot.com