我正在尝试检查无效的文件名。我希望文件名只包含小写、大写、数字、空格、句点、下划线、破折号和括号。我试过这个正则表达式:

$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/

10-13 07:46
查看更多