我需要一个满足这两个条件的正则表达式。
仅当字符串同时包含 AZ 和 0-9 时,它才应为真。
这是我尝试过的:
if PNo[0].matches("^[A-Z0-9]+$")
这没用。
原文由 Lucky 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要一个满足这两个条件的正则表达式。
仅当字符串同时包含 AZ 和 0-9 时,它才应为真。
这是我尝试过的:
if PNo[0].matches("^[A-Z0-9]+$")
这没用。
原文由 Lucky 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用两个单独的正则表达式,则更容易编写和阅读:
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);
}
原文由 jahroy 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答768 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
我怀疑下面的正则表达式因环视而变慢,但无论如何它都应该工作:
正则表达式断言字符串中某处有一个大写字母字符
(?=.*[A-Z])
,并断言字符串中某处有一个数字(?=.*[0-9])
,然后它检查是否所有内容都是字母顺序的字符或数字。