gpt4 book ai didi

linux - 验证文件字符的字符串,包括空格

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:45 25 4
gpt4 key购买 nike

我有以下代码:

if      ! [[ $1 =~ ^[0-9a-zA-Z._-]+$ ]]; then  
echo "argument contains characters not valid for name file"
fi

我想要的只是验证字符串是否具有有效文件名的有效字符(我知道我应该为文件开头和之后的长度添加测试)。

问题:

因此,它不会验证其中包含空格的字符串。

所以我需要在正则表达式中包含空格,但以下都不起作用:

[[ $1 =~ ^[0-9a-zA-Z ._-]+$ ]]   >>  syntax error
[[ $1 =~ ^[0-9a-zA-Z\t._-]+$ ]] >> still do not pass spaces
[[ $1 =~ ^[0-9a-zA-Z\s._-]+$ ]] >> still do not pass spaces
[[ $1 =~ "^[0-9a-zA-Z ._-]+$" ]] >> syntax error

我不确定还可以尝试什么。

到目前为止,我想出了一个快速而肮脏的事情:

myNewVar="${1// /}"

并用它做测试,但这远非优雅......

最佳答案

您可以使用 [:blank:] character class :

re='^[[:alnum:][:blank:]._-]+$'
if ! [[ $1 =~ $re ]]; then

请注意,我已将正则表达式移至单独的变量1,并且还引入了[:alnum:] 字符类。

代替正则表达式,您可以使用参数扩展来删除允许的字符并查看是否还有任何内容:

if [[ -n ${1//[[:alnum:][:blank:]._-]} ]]; then
echo "illegal character found"
fi

1主要是出于可移植性的原因,同时也是为了避免引用意外(例如上一个示例中未加引号的空白),请参阅 BashGuide (“正则表达式”部分)。

关于linux - 验证文件字符的字符串,包括空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55146538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com