如何在PowerShell中使用ValidatePattern校验多个整数参数?
错误原因排查
- 第一种写法仅给
$G1参数绑定了校验规则,其余$G2到$G5均无校验逻辑,且正则\d仅匹配单个数字、无首尾锚定,只要参数值包含任意数字即可通过校验,无法验证整个参数为整数。 - 第二种写法的正则匹配带空格的连续数字串,但PowerShell中传参的空格是参数分隔符,单个参数值不会包含空格,规则完全不匹配实际传参场景。
正确实现方案
方案1:直接使用整数类型约束(更推荐,可靠性更高)
直接给每个参数加[Int]类型声明,PowerShell会自动校验传入内容是否为合法整数,不符合时直接抛出参数错误:
Param ( [Int] $G1 = 0, [Int] $G2 = 0, [Int] $G3 = 0, [Int] $G4 = 0, [Int] $G5 = 0 )
该写法天然支持正整数、负整数、零的校验,无需额外写正则规则。
方案2:使用ValidatePattern实现(按需选择)
如果必须通过ValidatePattern完成校验,需要给每个参数都绑定校验属性,正则补充首尾锚定、匹配全量数字:
Param ( [ValidatePattern("^\d+$")] $G1 = 0, [ValidatePattern("^\d+$")] $G2 = 0, [ValidatePattern("^\d+$")] $G3 = 0, [ValidatePattern("^\d+$")] $G4 = 0, [ValidatePattern("^\d+$")] $G5 = 0 )
如果需要支持负整数,可将正则改为^-?\d+$。
内容的提问来源于stack exchange,提问作者Rachel D
相关产品推荐
相关产品推荐

