Bash中的正则表达式“if”声明

问题描述 投票:1回答:2
if [[ $1  =~ ^\'*\"*[\d+\w+]+\'*\"*$ ]]
    then
        echo true
    else
        echo error
        exit 1
fi

这个正则表达式似乎是正确的(用https://regexr.com和其他正则表达式站点验证),但是,脚本将评估为false。知道为什么吗?

对于这个论点,我期待一个如下的行:

Will0w

然而,要匹配,没有运气。

任何帮助,将不胜感激,

谢谢

regex bash
2个回答
2
投票

使用

if [[ $1  =~ ^\'*\"*[[:alnum:]]+\'*\"*$ ]]
    then
        echo true
    else
        echo error
        exit 1
fi

1
投票

使用grep的替代解决方案:

if echo $1 | grep -qP "^\'*\"*[\d+\w+]+\'*\"*$"
    then
        echo true
    else
        echo error
        exit 1
fi
© www.soinside.com 2019 - 2024. All rights reserved.