PowerShell中用正则替换ValidateSet实现*.dom.net域名验证
PowerShell 域名参数的正则通配验证方案
直接用[ValidatePattern]属性替换原来的[ValidateSet],就能实现你要的通配式验证。下面是适配你需求的完整代码:
[Parameter(Mandatory, Position = 2)] [ValidatePattern("^(abc\.white|abc\.black|[a-z]+\.dom\.net)$")] [string] $domain
正则规则说明:
^和$强制匹配整个字符串,防止出现类似fr.dom.net.abc这种不完整的域名通过验证abc\.white|abc\.black保留你原来需要的两个固定域名(正则里.是通配符,必须用\.转义才能匹配实际的点号)[a-z]+匹配一个或多个小写字母作为dom.net的前缀,如果你需要支持大写字母、数字或连字符,把这部分改成[a-zA-Z0-9-]+即可
可选配置:忽略大小写
如果不需要区分域名的大小写,可以给ValidatePattern加上IgnoreCase参数:
[Parameter(Mandatory, Position = 2)] [ValidatePattern("^(abc\.white|abc\.black|[a-z]+\.dom\.net)$", IgnoreCase = $true)] [string] $domain
测试示例:
- 合法输入:
abc.white、fr.dom.net、bg.dom.net、SK.dom.net(加IgnoreCase后) - 非法输入:
abc.gray、fr.dom.com、frdom.net
内容的提问来源于stack exchange,提问作者Purclot
相关产品推荐
相关产品推荐

