我是Shell脚本的新手,我正在尝试制作一个以以下模式接受用户输入的Shell脚本:alphabet.alphabet (没有数字,没有空格,没有大写字母,并且在字母之间严格地一个“。”。) 例如:abc.pqr 我尝试了以下代码
If [[ “$1” =~ ^[a-z\.\a-z]+$ ]]; then echo “matched” else “not matched” fi
但是它接受“ .pqr”和“ abc”。模式也是如此。 我不知道我在做什么错。 谁能解释。 ^ ^
答案 0 :(得分:1)
使用以下POSIX方括号表达式修改正则表达式以完成您要执行的操作。
regex='^[[:lower:]]{1,}\.[[:lower:]]{1,}$'
此外,您无需引用正则表达式运算符的L.H.S操作数,请按以下说明操作
[[ $1 =~ $regex ]]
还请注意不正确地使用了不正确的Unicode双引号“
,shell无法正确处理。应该是"
在https://regex101.com/r/be72FB/1上查看正则表达式匹配项
您的正则表达式为何不匹配的问题有两个原因
\
,它完全放在错误的位置。只有.
才需要转义,以避免被视为特殊字符。.
后缀的+
表示.
可以在搜索字符串中出现任意次数,这是不正确的。