Java - 如何测试字符串是否同时包含字母和数字
我需要一个满足这两个条件的正则表达式。
只有当字符串同时包含 A-Z 和 0-9 时,它才应该给我 true。
以下是我尝试过的方法:
if PNo[0].matches("^[A-Z0-9]+$")
它不起作用。
我需要一个满足这两个条件的正则表达式。
只有当字符串同时包含 A-Z 和 0-9 时,它才应该给我 true。
以下是我尝试过的方法:
if PNo[0].matches("^[A-Z0-9]+$")
它不起作用。
我怀疑下面的正则表达式被环顾四周的速度减慢了,但无论如何它都应该工作:
.matches("^(?=.*[A-Z])(?=.*[0-9])[A-Z0-9]+$")
正则表达式断言字符串中的某个位置存在大写字母字符,并断言字符串中的某个位置有一个数字,然后检查所有内容是字母字符还是数字。(?=.*[A-Z])
(?=.*[0-9])
如果使用两个单独的正则表达式,则编写和阅读会更容易:
String s = "blah-FOO-test-1-2-3";
String numRegex = ".*[0-9].*";
String alphaRegex = ".*[A-Z].*";
if (s.matches(numRegex) && s.matches(alphaRegex)) {
System.out.println("Valid: " + input);
}
更好的是,写一个方法:
public boolean isValid(String s) {
String n = ".*[0-9].*";
String a = ".*[A-Z].*";
return s.matches(n) && s.matches(a);
}