使用java中的regex检查字符串中的特殊字符

时间:2017-12-30 04:56:30

标签: java android regex

如何检查字符串中的特殊字符?我正在使用正则表达式检查空格,但是当我输入特殊字符时,它会将它们视为空格。以下是我的代码

  private boolean emptySpacecheck(String msg){

    return msg.matches(".*\\w.*");
}

如何检查特殊字符?

4 个答案:

答案 0 :(得分:5)

您可以使用模式匹配器检查特殊字符,您可以查看以下示例:

Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]");

if (regex.matcher(your_string).find()) {
    Log.d("TTT, "SPECIAL CHARS FOUND");
    return;
} 

希望这有助于您......如果您需要任何帮助,可以提出

答案 1 :(得分:1)

  

...当我输入特殊字符时,它会将它们视为空格。

这意味着您只想检查字符串是否包含空格。

您不需要正则表达式来检查空间。您只需拨打String#contains方法即可。

private boolean emptySpacecheck(String msg){
    return msg != null && msg.contains(" ");
}

答案 2 :(得分:1)

您可以使用以下RegExp:

private boolean emptySpacecheck(String msg){
    return msg.matches(".*\\s+.*");
}
  • \s与以下字符匹配:[ \t\n\x0B\f\r]

在线试用:https://regex101.com/r/GztOoI/1

答案 3 :(得分:1)

  

一种简单的方法是检查字符串是否包含任何非字母数字   字符。

尝试,

StringChecker.java

public class StringChecker {

   public static void main(String[] args) {

      String str = "abc$def^ghi#jkl";

      Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
      Matcher m = p.matcher(str);

      System.out.println(str);
      int count = 0;
      while (m.find()) {
         count = count+1;
         System.out.println("position "  + m.start() + ": " + str.charAt(m.start()));
      }
      System.out.println("There are " + count + " special characters");
   }
}

您的结果如下所示:

$ java SpecialChars
abc$def^ghi#jkl
position 3: $
position 7: ^
position 11: #
There are 3 special characters
  

您可以根据需要将自己的模式作为参数传递给编译方法   检查特殊字符:

Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]");