正则表达式小写脚本验证

正则表达式小写脚本验证

我正在做一项家庭作业,以验证输入的字符串是否全部为小写字母。这是我们提供的基本脚本。

这是我需要更改的行。

if [[ "$input" =~ Add your regular expression here ]]

如果我[a-z]输入仅包含一个小写字母的任何内容,则将验证。 “布莱恩[[:lower:]]”会验证,而“猫”则不会,但胡言乱语,这样就trhrh可以了。我不知道这里使用的正则表达式。我将非常感谢任何帮助。

答案1

测试字符串是否包含以下内容不是一个小写字母。

if [[ "$input" =~ [^[:lower:]] ]]; then
    # contains something that is not a lower case letter
else
    # contain only lower case letters
fi

或者,

if ! [[ "$input" =~ [^[:lower:]] ]]; then
    # contain only lower case letters
fi

^括号表达式开头的 会反转匹配的含义,以便匹配[^abc]任何单个字符不是 ab, 或者c

或者,通过在两端锚定字符串来匹配字符串的整个长度:

if [[ "$input" =~ ^[[:lower:]]+$ ]]; then
    # contain only lower case letters
fi

^表达式开头的 只锚定到字符串的开头,而结尾$的 锚定到字符串的结尾。在这些之间,我们只允许使用小写字母[[:lower:]]+,即一个或多个小写字母。使用*in 代替+也可以使表达式成功匹配空字符串。

[[:lower:]]另请注意(匹配单个小写字母) 和[:lower:]匹配字符:lowe或)之间的区别r。在最初的问题中,您说 that与while isn'tBrian匹配,现在应该有意义了。在编辑中,您将表达式更改为正确的,现在也应该匹配。[:lower:]cats[[:lower:]]cats


为正则表达式匹配设置了通配符匹配:

if [[ "$input" == *[![:lower:]]* ]]; then
    # contains something that is not a lower case letter
else
    # contain only lower case letters
fi

在通配模式中,!括号表达式的开头与^正则表达式情况下的工作方式相同(尽管我相信在通配模式中bash也能识别^那里)。

答案2

如果您愿意,您还可以检查此衬垫:

echo "$input" | grep -qE '^[[:lower:]]*$' && echo "All LowerCase" || echo "Not All LowerCase"

相关内容