我写了一个程序,可以添加类别,因为它在第一个位置上存在特殊字符和数字的问题,所以我制作了一个regex过滤器,该过滤器只应处理特殊字符。但是,如果我现在使用包含数字的单词,由于某种原因,该方法也会返回true。
private boolean containsSpecChar () {
Pattern pattern = Pattern.compile("[a-zA-Z0-9]");
Pattern p = Pattern.compile("[0-9a-zA-Z]");
String a = null;
a = txtInKategorieName.getText();
Matcher match= pattern.matcher(a);
Matcher m = p.matcher(a);
if (
match.matches() || m.matches()
)
{
return false;
}
else
{
return true;
}
}
我也希望能够使用包含数字的单词。 谢谢
答案 0 :(得分:2)
[a-zA-Z0-9]
和[0-9a-zA-Z]
是同一件事。
[xxx]
正则表达式模式是character class,它与单个字符匹配。如果要匹配这些字符中的一个或多个,则需要在末尾添加+
quantifier:
"[a-zA-Z0-9]+"
答案 1 :(得分:1)
如果只希望包含字母和/或数字的单词为true,请使用[a-zA-Z0-9]+
作为模式。
答案 2 :(得分:0)
这是.matches
的方式:
public static boolean containsSpecChar () {
Pattern pattern = Pattern.compile("[a-zA-Z0-9]+");
String a = txtInKategorieName.getText();
Matcher match = pattern.matcher(a);
return !match.matches();
}
这是.find
的方式:
public static boolean containsSpecChar () {
Pattern pattern = Pattern.compile("[^a-zA-Z0-9]");
String a = txtInKategorieName.getText();
Matcher match = pattern.matcher(a);
return match.find();
}