Java正则表达式与字符串密码匹配
我最近在教科书中遇到了这个问题: 我想写一个方法来检查字符串是否有:Java正则表达式与字符串密码匹配,java,regex,Java,Regex,我最近在教科书中遇到了这个问题: 我想写一个方法来检查字符串是否有: 至少十个字符 只有字母和数字 至少三位数 我试图通过Regx来解决它,而不是遍历每个字符;到目前为止,我得到的是: String regx = "[a-z0-9]{10,}"; 但这只符合前两个条件。我应该如何处理第三个条件?您可以对第三个条件使用正向前瞻,如下所示: ^(?=(?:.*\d){3,})[a-z0-9]{10,}$ ^表示字符串的开头 (?=…)是正向前瞻,它将搜索整个字符串以匹配(?=和)之间的任何内容
String regx = "[a-z0-9]{10,}";
但这只符合前两个条件。我应该如何处理第三个条件?您可以对第三个条件使用正向前瞻,如下所示:
^(?=(?:.*\d){3,})[a-z0-9]{10,}$
表示字符串的开头^
是正向前瞻,它将搜索整个字符串以匹配(?=…)
和(?=
之间的任何内容)
匹配字符串中至少3位数字。(?:.*\d){3,}
匹配前面有任何(或无)字符的数字(如果省略,则仅匹配连续数字)*\d
匹配三个或更多的{3,}
*\d
是非捕获组(?:…)
表示字符串的结尾$
?:
允许使用括号对表达式进行分组(例如,*\d
),而无需捕获它(您需要对表达式进行分组,以便对其应用{3,}
)。您可以在没有?:
的情况下使用相同的表达式,它仍然可以工作。@Anlinyang我不确定,我不懂Java,但据我所知,字符串类方法接受简单的正则表达式,所以我想您需要先创建一个模式,然后将字符串与之匹配。