我有以下PowerShell函数,其中我正在验证参数是否是一个数字,或一组由逗号分隔的数字,或一系列数字。
function CheckUpkeep() {
Param(
[ValidatePattern("\d+(,|-\d+)*")]
[Parameter(Mandatory = $true, Position=0)]
$ID
)
Write-Output "ID: $ID"
}
调用它的有效方法的示例如下:
CheckUpkeep 1
CheckUpkeep 1-10
CheckUpKeep 1-3,5-10
1-10例
输出:
ID: 1-10输出1-3,5-10箱:
编号: 1-3 5-10
如何更新regex,以便捕获逗号,而不必在调用函数(CheckUpkeep " 1-3,5-10 ")时使用字符串引号(无论是单引号还是双引号),以便在调用1-3、5-10情况下:
CheckUpkeep 1-3,5-10
产出如下:
ID: 1-3,5-10
谢谢!
发布于 2022-02-04 08:05:41
问题不是如何包含逗号,而是如何在处理后再次输出逗号。
由于您不想添加引号,所以我假设您也不想用反勾号(`
)转义逗号。在没有引号或转义的情况下,逗号将告诉PowerShell将输入视为数组。这是正确的行为,imo,因为在此之后,您可以直接处理数字集的数字,而无需自己解析逗号分隔的字符串。
若要再次输出逗号,请更改以下行:
Write-Output "ID: $ID"
到这一行:
Write-Output "ID: $($ID -join ',')"
对于不包含逗号的输入,这也将正确工作。
https://stackoverflow.com/questions/70982129
复制相似问题