我正在尝试查找字符串是否仅包含数字和特殊字符。
我尝试了下面的代码,但是没有用
String text="123$%$443";
String regex = "[0-9]+";
String splChrs = "-/@#$%^&_+=()" ;
if ((text.matches(regex)) && (text.matches("[" + splChrs + "]+"))) {
System.out.println("no alphabets");
}
答案 0 :(得分:8)
答案 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
类包括L
,Nl
(字母编号)和Other_Alphabetic
类别,可能太宽泛了,但是如果需要检查的话是很好的用于字母和变音符号。
String#matches
方法需要完整的字符串匹配,因此在上面的代码中未使用锚点(^
/ \A
和$
/ \z
)片段。
答案 3 :(得分:0)
在Java正则表达式中,“ match”和“ find”是不同的方法。如果您的字符串仅包含您要查找的字母,请使用“ find”。如果您要匹配整个字符串,请使用“ match”