使用正则表达式检查句子中是否有特殊字符和符号

时间:2015-08-10 03:11:46

标签: regex bash shell sh

我想在shell脚本中使用Regex检查文本文件中是否有特殊字符。 假设有句子“assccÑasas” 如何检查线内是否有'Ñ',所以应该输出为错误。 我还想检查是否有'/'或'^'或'&'等符号

我的代码:

VALID='^[a-zA-Z_0-9&.<>/|\-]+$' #myregex

checkError(){
    if [[ $line =~ $VALID ]]; then
       echo "tes"
    else
        echo "not okay"
       exit 1
    fi
 }

 while read line
 do 
    checkRusak      
 done < $1

所以这个例子就好像有句“StÀckOpflow;”那么它会输出错误。如果有句子“堆栈溢出;”仍然输出错误。 但如果只是“堆栈溢出”(没有符号或特殊字符),它将输出“test”

到目前为止,它可以检查符号('/'或'\'等),但仍然存在特殊字符问题。

任何帮助真的很感激, 提前谢谢你

1 个答案:

答案 0 :(得分:0)

你可以

  • 定义哪些字符有效且仅允许这些或

  • 定义哪些字符无效并检查是否有

对于第二种方法,您可以使用此正则表达式:[^a-zA-Z_0-9\s]

方括号内的^否定字符类,因此它匹配任何字符串,其中包含字母A-Z的字符,{{1数字,下划线或空格。

由于您想要检测单个字符,因此不需要量词。

Demo