Java正则表达式-字母表+;最少总数为3的数字 到目前为止我一直在做什么?

Java正则表达式-字母表+;最少总数为3的数字 到目前为止我一直在做什么?,java,regex,Java,Regex,我已经在互联网上搜索了整整一个小时,但我似乎找不到它,大多数答案都是基于字母或数字。我是一个正则表达式的初学者,我正在努力学习它,但我不明白为什么它不起作用 问题 我想要的是(对于搜索机器)输入用模式进行验证。此图案必须至少由3个字母和/或数字组成。也允许使用特殊字符,但输入中必须至少有3个字母或数字 我试过什么? 我尝试使用(([aazz]{0,}[0-9]{0,}){3,})\w+,但这不允许使用特殊字符,也不能得到我想要3个后续字符的结果,因为也允许使用2个 那么什么是正确的,什么是不正确

我已经在互联网上搜索了整整一个小时,但我似乎找不到它,大多数答案都是基于字母或数字。我是一个正则表达式的初学者,我正在努力学习它,但我不明白为什么它不起作用

问题 我想要的是(对于搜索机器)输入用模式进行验证。此图案必须至少由3个字母和/或数字组成。也允许使用特殊字符,但输入中必须至少有3个字母或数字

我试过什么? 我尝试使用
(([aazz]{0,}[0-9]{0,}){3,})\w+
,但这不允许使用特殊字符,也不能得到我想要3个后续字符的结果,因为也允许使用2个

那么什么是正确的,什么是不正确的? asdA-正确-连续三次以上

as-不正确-连续少于三个

a1s-正确-连续三次

+a1s/正确连续三次


+a1-s-不正确-一行少于3个

如果需要验证3个连续字母或数字,请使用此正则表达式:

[A-Za-z0-9]{3}
在java使用中:

str.matches(".*[A-Za-z0-9]{3}.*");

尝试使用以下方法:

 System.out.println("asdA".matches(".*?[a-zA-Z0-9]{3}.*?"));
 System.out.println("as".matches(".*?[a-zA-Z0-9]{3}.*?"));
 System.out.println("a1s".matches(".*?[a-zA-Z0-9]{3}.*?"));
 System.out.println("+a1s/".matches(".*?[a-zA-Z0-9]{3}.*?"));
 System.out.println("+a1-s".matches(".*?[a-zA-Z0-9]{3}.*?"));

我认为这会对你有用:

\w*([a-zA-Z0-9]){3,}\w*

这个模式几乎完全回答了我的问题,我必须在3之后添加一个,但它似乎不包括任何尾随的特殊字符,你不需要一个“,”它将被包含字母、数字或组合的3个连续3个字符之后的任意数量的字符所覆盖。你想要什么样的模式?啊,当然我理解,但由于某种原因,被接受的答案也会验证尾随的特殊字符,而你的答案不会(使用)啊,我知道这是因为“?”是“懒惰”的,所以它不会匹配特殊字符啊,我测试这个答案时没有
*
,效果很好