gpt4 book ai didi

regex - Powershell正则表达式以匹配IP和两个通配符

转载 作者:行者123 更新时间:2023-12-03 00:06:55 27 4
gpt4 key购买 nike

我正在写一个小的实用程序,要求用户输入IP地址或主机名。我想验证IP地址,该地址可以包含“*”或“?”的PS通配符。

到目前为止,我已经有了此正则表达式,它将匹配有效的IP地址和'*'通配符:

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

我现在对如何添加“?”有些困惑。通配符,可以用通配符代替任何一位数字,例如

真正:
('192.1??.2?.1' -match $IPmatch)
('19?,?68,*.*' -match $IPMatch)

编辑:

这似乎有效吗?
[regex]$IPmatch = "^((([0-9\?]{1,2})|([1\?][0-9\?]{2,2})|([2\?][0-4\?][0-9\?])|(25[0-5\?])|\*)\.){3}(([0-9\?]{1,2})|([1\?][0-9\?]{2,2})|([2/?][0-4\?][0-9\?])|(25[0-5\?])|\*)$"

最佳答案

最简单的方法是将通配符替换为有效数字(1):

PS> $ipObject = $null
PS> $ip = "192.1??.2?.1" -replace "[?*]","1"
PS> [System.Net.IPAddress]::TryParse($ip, [ref]$ipObject)
True

PS> $ip = "192.1??.*.*" -replace "[?*]","1"
PS> [System.Net.IPAddress]::TryParse($ip, [ref]$ipObject)
True

关于regex - Powershell正则表达式以匹配IP和两个通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59322653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com