regex - 包含至少一位数字的字母数字字符串的正则表达式
问题描述
我正在寻找符合条件的正则表达式:
- a) 最少 13 个字母数字字符
- b) 最多 17 个字母数字字符
- c) 和至少 1 位数字。
此正则表达式满足 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。
解决方案
听起来您正在尝试制作密码检查器。我建议您不要尝试在一个正则表达式中完成所有操作。
对照两个必须匹配的不同正则表达式检查您的输入:
^[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}$
...这样会更清晰,并且当您的规则在未来发生变化时更容易更改。
推荐阅读
- python - 根据 pandas pivot_table 索引查找前 3 名公司
- python - xarray 数据集/dataarray 上的坐标映射
- laravel - 遍历 Laravel 8 中的帖子
- html - HTML使左右div具有左一个位置:固定
- python - 用 Beautifulsoup 抓取视频描述
- reactjs - 使用后端弹簧启动的身份验证 reactjs
- ios - GeometryReader 仍然考虑到宿主控制器的隐藏导航栏
- react-native - 如何在 React Native 中创建渐变模糊效果
- c# - 是否有使用 C# 比较两个 PNG 图像的一部分而不是完整图像的功能?
- javascript - 在 HTML 中链接 CSS 文件会导致 HTML5 视频无法正常工作