我在文件“Publish-MyProj.ps1”中有一个powershell脚本,其头部定义如下:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[ValidatePattern("\d{1,2}\.\d{1,2}\.\d{1,3}")]
[string]$Version
)
当我像这样运行脚本时:
.\Publish-MyProj.ps1 10.2
它显示错误,这是预期的行为。
然而,当我用一个几乎没有问题的版本运行它时:
.\Publish-MyProj.ps1 111.2.25
即使第一个数字超过允许的数字,也不会失败。
这是一个错误还是我做错了?
答案 0 :(得分:2)
这是因为你没有指定你的正则表达式从字符串的开头匹配,所以它匹配1 11.2.25 并且不会失败。
使用此正则表达式(注意^
修饰符):^\d{1,2}\.\d{1,2}\.\d{1,3}
甚至更好:^\d{1,2}\.\d{1,2}\.\d{1,3}$
P.S。您可以在https://regex101.com轻松测试正则表达式,看看匹配与否。