正则表达式 – Bash需要测试字母数字字符串

前端之家收集整理的这篇文章主要介绍了正则表达式 – Bash需要测试字母数字字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试验证字符串中只包含小写,大写或数字.

if ! [[ "$TITLE" =~ ^[a-zA-Z0-9]+$]]; then echo "INVALID"; fi

思考?

*更新*

变量TITLE目前只有大写文本,所以它应该通过,不应输出任何内容.但是,如果我向TITLE添加一个特殊字符,IF语句应该捕获它并回显INVALID.目前它不起作用.它总是回声无效.我认为这是因为我的正则表达式是错误的.我想我写它的方式,它寻找一个包含所有三个标题标题.

Bash 4.2.25

这个想法是,用户应该能够添加任何标题,只要它只包含大写,小写或数字.所有其他角色都应该失败.

*更新*

如果TITLE = ThisIsAValidTitle它回声无效.

如果TITLE = ThisIs @@@@@@@ InvalidTitle,它也无效.

*解决方案*

很奇怪,当我简化它时,它开始工作了:

TEST="Valid0"
if ! [[ "$TEST" =~ [^a-zA-Z0-9] ]]; then
  echo "VALID"
else
  echo "INVALID"
fi

*真正解决方案*

我的变量中有空格…… DUH

对不起麻烦的家伙……

*最终解决方案*

这说明了标题中的空格

if ! [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then
  echo "VALID"
else
  echo "INVALID"
fi

解决方法

我会颠倒逻辑.测试无效字符并在至少存在一个警告时回显警告:

if [[ "$TITLE" =~ [^a-zA-Z0-9] ]]; then
  echo "INVALID"
fi

话虽如此,您的原始支票对我有用,因此您可能需要提供更多上下文(即脚本的更大部分).

猜你在找的正则表达式相关文章