java正则表达式,用于匹配长度大于n的字母和数字字符串?
我希望编写一个正则表达式,将字符串与数字匹配
我有以下正则表达式哪种作品:
[a-z0-9]*([a-z]+[0-9]+)+[a-z0-9]*
结果:
abc1234aa121aaa //Matches
abc123 //Matches
12abc123sd12 //Matches
abcaaaaaa //Does not match
ab12b12b12b2321b3 //Matches
ab12b12b12b2321b //Matches
1abc1234aa121aaa //Matches
v2 //Matches
但如果我想匹配长度为5或更大的字符串,它就不起作用了
([a-z0-9]*([a-z]+[0-9]+)+[a-z0-9]*){5,}
# 1 楼答案
这应该对你有帮助。此正则表达式匹配任何字符串(即\w*[0-9]+\w*,其中\w是[a-zA-Z0-9\]的缩写)
在开始时,有一个肯定的前瞻,它断言匹配中的行中至少有5个单词字符。这样,单词中任何少于5个字符都会导致前瞻失败
# 2 楼答案
在第一个模式中
v2
匹配,但由于您有一个固定的顺序[a-z]+[0-9]+
,那么2v
将不匹配当您在第二个模式中使用量词
{5,}
并使用[a-z]+[0-9]+
时,最小长度至少为10如果您希望
match a string with alphabets AND numbers with length greater than n
因此只有数字不应匹配,您可以使用:\b
字边界(?=[a-z0-9]{5,})
断言字符a-z或数字0-9的5次或5次以上(?=[a-z0-9]*[a-z])
至少断言1个字符a-z[a-z0-9]*
匹配0+乘以a-z或0-9[0-9]
匹配数字0-9[a-z0-9]*
匹配0+乘以a-z或0-9\b
字边界Regex demo
在爪哇