String 检查字符串是否仅包含包括下划线在内的指定字符

String 检查字符串是否仅包含包括下划线在内的指定字符,string,bash,character,String,Bash,Character,我希望从用户处接收一个字符串(一个单词),条件如下:该字符串只能包含字母字符(aA zZ)和下划线。不允许使用数字和其他字符 如何在BASH中执行此操作?使用=~根据(POSIX扩展)正则表达式检查字符串。有关更多信息,请参见手册页bash(1)和regex(7) # assume your string is in variable $s if [[ $s =~ ^[A-Za-z_]+$ ]]; then # it matches else # doesn't match fi 你说

我希望从用户处接收一个字符串(一个单词),条件如下:该字符串只能包含字母字符(aA zZ)和下划线。不允许使用数字和其他字符


如何在BASH中执行此操作?

使用
=~
根据(POSIX扩展)正则表达式检查字符串。有关更多信息,请参见手册页
bash(1)
regex(7)

# assume your string is in variable $s
if [[ $s =~ ^[A-Za-z_]+$ ]]; then
  # it matches
else
  # doesn't match
fi

你说的字符是指字母字符吗<代码>[A-Za-z]?因为根据定义,字符串中的所有内容都是字符……你能告诉我们你已经尝试了什么吗?到目前为止你有什么代码?它似乎出了什么问题?你读过Bash的手册吗?我不明白这段代码是如何工作的。手册页不太清楚。=~和+$实际上是做什么的?如果我还想允许空白怎么办?@Khaleal,向谷歌索取正则表达式教程,你会成功的。或者试试你评论上面的链接。@Khaleal用斜杠转义对我有用:^[a-Za-z\],但斜杠似乎不适用于此…@Jordan关于
^[a-Za-z\-]+$
呢?破折号必须位于
[]
类的前端或末端。