使用正则表达式检查字符串是否至少有两个数字

4

在stackoverflow上找到一些代码,可以检查字符串是否是字母数字且长度超过8个字符。它很好用。现在如果它包含至少2个数字,如何使其返回true?我认为我需要在某个地方添加\d{2}

String pattern = "^[a-zA-Z0-9]*$";

if (s.matches(pattern) && s.length() >= 8){
    return true;
}
return false;
3个回答

6
您不需要单独的if条件。一个正则表达式就可以为您完成所有操作。
String pattern = "^(?=.*?\\d.*\\d)[a-zA-Z0-9]{8,}$";

你好。或者:"^(?=.*?\d.\d)(?=.?[A-Za-z])[a-zA-Z0-9]{8,}$" - Avinash Raj

3
您可以在一行代码中完成它:
return s.matches("(?=(.*?\\d){2})[a-zA-Z0-9]{8,}");

2

使用正向预查断言:

^<b><i>(?=(?:\D*\d){2})</i></b>[a-zA-Z0-9]*$

这里是一个正则表达式演示


谢谢!如果我早些知道正则表达式,我的生活会更轻松。我曾经将字符转换为它们的ASCII值并进行比较。 - Jack
@Jack 我看你自己解析了字符串 :P - Unihedron
是的,作为Python开发者,偶尔看到这样的功能确实很不错。 - Jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接