我正在尝试验证一个字符串以确保它是一个有效的注册表路径,并且遇到了非打印字符部分的问题。给定这三个字符串
$stringLiteral = 'line`nline'
$stringEscape = "line`nline"
$string = "lineline"
我还应该在$stringEscape
. 使用仅在此处搜索一个转义字符的简单正则表达式模式有效。所以
$pattern = "`n"
$stringLiteral -match $pattern
$stringEscape -match $pattern
$string -match $pattern
正确返回
False
True
False
但是,我想搜索此处定义的所有非打印字符。所以我在想像这样的字符集会起作用。
$pattern = '[`0`a`b`e`f`n`r`t`v]'
但这对于所有三个测试都返回 true。我也试过
$pattern = '[`0|`a|`b|`e|`f|`n|`r|`t|`v]'
$pattern = '`0`a`b`e`f`n`r`t`v'
$pattern = '`0|`a|`b|`e|`f|`n|`r|`t|`v'
这些都不起作用,但正如预期的那样,有不同的故障模式。这里的诀窍是什么?