加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:07:32 所属栏目:百科 来源:网络整理
导读:尝试验证字符串中只包含小写,大写或数字. if ! [[ "$TITLE" =~ ^[a-zA-Z0-9]+$]]; then echo "INVALID"; fi 思考? *更新* 变量TITLE目前只有大写文本,所以它应该通过,不应输出任何内容.但是,如果我向TITLE添加一个特殊字符,IF语句应该捕获它并回显INVALID.
尝试验证字符串中只包含小写,大写或数字.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读