Java 检查字符串是否没有字母表

Java 检查字符串是否没有字母表,java,regex,Java,Regex,我试图找出字符串是否只有数字和特殊字符 我尝试了下面的代码,但它不工作 String text="123$%$443"; String regex = "[0-9]+"; String splChrs = "-/@#$%^&_+=()" ; if ((text.matches(regex)) && (text.matches("[" + splChrs + "]+"))) { System.out.println("no alphabets"); } 如果要检查文本

我试图找出字符串是否只有数字和特殊字符

我尝试了下面的代码,但它不工作

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

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

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

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

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

请注意,
-
必须由一个
\
进行escpad,它本身必须转义。

只需使用
^
排除字母:

[^a-zA-Z]+

请参见以下几种可能适用于各种需求的解决方案:

文本不能只有ASCII字母

if (text.matches("\\P{Alpha}+")) {
  System.out.println("No ASCII letters");
}
文本不能有来自整个BMP平面的字母

if (text.matches("\\P{L}+")) {
  System.out.println("No Unicode letters");
}
文本必须没有

*注意:
IsAlphabetic
类包括
L
Nl
(字母编号)和
其他字母
类别,可能过于宽泛,但如果需要检查字母和变音符号,则可以使用


String#matches
方法需要完整的字符串匹配,因此在上述代码段中不使用锚(
^
/
\a
$
/
\z
)在java正则表达式中,“match”和“find”是不同的方法。如果字符串中只包含要查找的字母,使用“查找”。或者如果要匹配整个字符串,请使用“匹配”

什么是“没有字母表”?如果您的意思是“不包含字母”,则只需检查它是否包含字母,其中您的两个正则表达式和逻辑
&&
不检查
文本
是否包含字母
[a-z]
。只有英文字母或任何字母?必须对所有文本-->^[^a-zA-z]进行此检查+$@leMandarin但方法在匹配整个字符串双引号时返回true“这也是一个特殊字符,如何添加它?如何添加反斜杠\String regex=“[0-9\\-/@~\\$%!^&'*,-./:\”`;?{}124; u+=()\\ s]+”;我现在这样使用,我必须添加反斜杠\和方括号[]。如何添加它?并告诉我是否遗漏了任何特殊字符。