正则表达式最后截断零

正则表达式最后截断零

我有一个包含 powershell 正则表达式的脚本,在从 Windows 7 升级到 10 后,它的工作方式有所不同。

正则表达式:

if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$'){$srv = "192.168.$srv"}

预期的:

Let's say that $srv="1.0"
result: 192.168.1.0

当我将其升级到 Windows 10 之后,它最终只是削减了零。

Now result will be: 192.168.1
BUT! if $srv="1.01", the result will be 192.168.1.01

我搜索了 powershell 版本之间的正则表达式差异,但一无所获。请帮忙 :)

答案1

你说的输出

$srv = "1.0"; 如果 ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"192.168.$srv"}

192.168.1.0

如果我理解正确的话,当你使用

$srv = $args[0]; 如果 ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"192.168.$srv"}

1.0作为参数传递,输出是192.168.1

唯一可能的方法是如果你的脚本输出这个别的地方。因为它不可能来自这个if声明。

您能否对脚本进行以下更改并向我们展示输出:

$srv = $args[0];
"srv = $srv";
if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"IF 内部:192.168.$srv"}

谢谢

相关内容