我想编写一个与所有具有字母,数字和下划线的字符匹配的脚本。 可能的有效字符串:
asd_asd
Asd_asd
asd_123
123_asd
123_aSD
,依此类推。 到目前为止,我尝试过的是:
if [[ "$LINE" =~ [a-zA-Z0-9_] ]]
但这将匹配包含以下任何字符的任何字符:!@#$%^&*()_ +} {|?> <`!,以及其他奇怪的符号。
我考虑过将特殊字符放入列表中,如果字符串包含列表中的一个字符,则忽略该字符串,但是我恐怕可以跳过一个字符。
在这种情况下最好做什么?
答案 0 :(得分:5)
[a-zA-Z0-9_]
仅匹配一个字符。您需要使用以下模式:
^[a-zA-Z0-9_]+$
^
匹配输入字符串的开头,$
匹配结尾,[...]+
匹配字符类中的一个或多个字符(上述模式中的a-zA-Z0-9_
)。