我正在尝试检查无效的文件名。我希望文件名只包含小写、大写、数字、空格、句点、下划线、破折号和括号。我试过这个正则表达式:
$regex = [regex]"^([a-zA-Z0-9\s\._-\)\(]+)$"
$text = "hel()lo"
if($text -notmatch $regex)
{
write-host 'not valid'
}
我收到此错误:
Error: "parsing "^([a-zA-Z0-9\s\._-\)\(]+)$" - [x-y] range in reverse order"
我究竟做错了什么?
最佳答案
尝试将 -
移动到字符类的末尾
^([a-zA-Z0-9\s\._\)\(-]+)$
在字符类的中间,它需要被转义,否则它定义了一个范围
关于regex - 使用正则表达式匹配powershell中的括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6059715/