检查字符串是否没有字母

时间:2019-06-03 06:51:54

标签: java regex

我正在尝试查找字符串是否仅包含数字和特殊字符。

我尝试了下面的代码,但是没有用

String text="123$%$443";
String regex = "[0-9]+";
String splChrs = "-/@#$%^&_+=()" ;
if ((text.matches(regex)) && (text.matches("[" + splChrs + "]+"))) {
  System.out.println("no alphabets");
}

4 个答案:

答案 0 :(得分:8)

仅排除使用^字母:

[^a-zA-Z]+

请参见demo

答案 1 :(得分:3)

如果要检查text 不包含任何字母[A-Za-z] ,请尝试以下操作:

if (!text.matches("[A-Za-z]+")) {
  System.out.println("no letters");
}

如果您要检查text 仅包含数字和给定的特殊字符,请尝试以下操作:

String regex = "[0-9\\-/@#$%^&_+=()]+";
if (text.matches(regex)) {
  System.out.println("no letters");
}

请注意,-必须由\进行转义,而ArrayBlockingQueue本身必须被转义。

答案 2 :(得分:1)

以下几种解决方案可以满足各种需求:

文本中不得包含纯ASCII字母

if (text.matches("\\P{Alpha}+")) {
  System.out.println("No ASCII letters");
}

文本必须不包含整个BMP平面中的字母

if (text.matches("\\P{L}+")) {
  System.out.println("No Unicode letters");
}

文本中不得包含alphabetic chars

if (text.matches("\\P{IsAlphabetic}+")) {
  System.out.println("No alphabetic chars");
}

*注意:IsAlphabetic类包括LNl(字母编号)和Other_Alphabetic类别,可能太宽泛了,但是如果需要检查的话是很好的用于字母和变音符号。

String#matches方法需要完整的字符串匹配,因此在上面的代码中未使用锚点(^ / \A$ / \z)片段。

答案 3 :(得分:0)

在Java正则表达式中,“ match”和“ find”是不同的方法。如果您的字符串仅包含您要查找的字母,请使用“ find”。如果您要匹配整个字符串,请使用“ match”