我试图查看字符串是否至少包含一个数字或小写或大写 .
我写过这样的话:
int combinations = 0;
string pass = "!!!AAabas1";
if (pass.matches("[0-9]")) {
combinations = combinations + 10;
}
if (pass.matches("[a-z]")) {
combinations =combinations + 26;
}
if (pass.matches("[A-Z]")) {
combinations =combinations + 26;
}
但是我不明白为什么我不能得到组合去36 . 他们只是保持在0.我做错了什么?
5 回答
您可以使用Pattern,我认为“matches”方法查找整个字符串以匹配正则表达式 .
尝试下一个代码:
这是我的尝试 . 注意,这使用unicode类别进行验证,因此非拉丁语言友好 .
这是输出:
问题是
matches
尝试匹配整个输入字符串 .相反,尝试创建
Pattern
,然后从那里创建Matcher
,然后使用find方法 .Pattern javadoc应该有很大帮助 .
虽然使用正则表达式显然可行,但Guava的CharMatcher类可能更适合您尝试的操作: