首页 > 解决方案 > 包含至少一位数字的字母数字字符串的正则表达式

问题描述

我正在寻找符合条件的正则表达式:

此正则表达式满足 a) 和 b)。它如何也满足条件 c)?

^[a-zA-Z0-9]{13,17}$

输入文本示例:

# matching
123456789abcd
123456789abcdef
123456789abcdefg

# no match: too long
123456789abcdefgef

# no match: no digit
abcdefghijklmno

# no match: not alphanumeric only
123456789@abcdefg

风格是 Java 8。

标签: regex

解决方案


听起来您正在尝试制作密码检查器。我建议您不要尝试在一个正则表达式中完成所有操作。

对照两个必须匹配的不同正则表达式检查您的输入:

^[a-zA-Z0-9]{13,17}$        # 13-17 alphanumerics

[0-9]                       # at least one digit

与另一个答案的这个建议相比......

^(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[[:alnum:]]{13,17}$

...这样会更清晰,并且当您的规则在未来发生变化时更容易更改。


推荐阅读