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

Check if there is special character and symbol inside a sentence using regex

我想在 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 < 

所以这个例子如果有句子"StÀck Overflow;"那么它会输出错误。如果有句"stack overflow;"还是输出错误。 但如果只有 "stack overflow" (没有符号或特殊字符),它将输出 "test"

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

非常感谢任何帮助, 提前谢谢你

你可以

  • 定义,哪些字符有效,只允许这些或

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

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

方括号内的 ^ 否定字符 class,因此它匹配任何包含 不是 字母的字符的字符串A-Za-z、数字、下划线或白色 space。

既然要检测单个字符,就不需要量词了。

Demo