PowerShellで文字列がIPアドレス(IPv4)か判定する方法です。
正規表現を使う方法
- PowerShellでは正規表現は「-match」を使う。
- 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