java-如何测试字符串是否同时包含字母和数字


问题内容

我需要一个能同时满足这两个条件的正则表达式。

仅当字符串同时包含AZ和0-9时,它才应该为真。

这是我尝试过的:

if PNo[0].matches("^[A-Z0-9]+$")

这是行不通的。


问题答案:

我怀疑下面的正则表达式会因环顾而变慢,但是无论如何它都可以工作:

.matches("^(?=.*[A-Z])(?=.*[0-9])[A-Z0-9]+$")

正则表达式断言(?=.*[A-Z])字符串中某处有一个大写字母字符,断言字符串中某处有一个数字(?=.*[0-9]),然后它检查所有内容是字母字符还是数字。