java - 使用正则表达式验证可变长度字符串

标签 java android regex

我正在尝试使用 Regex 验证 Java 中的表单字段,它可以有 5 种不同的格式可能性。我正在努力让这个工作起来。

要检查的字符串将在 4-6 个字母数字字符之间。

如果是 4 个字符,则必须全部是数字。

^\\d{4}$

如果是 5 个字符,则可以是全数字、第一个位置字母后跟 4 个数字,或者前 3 个位置字母后跟 2 个数字。

 ^\\d{5}$
 ^[a-zA-Z]\\d{4}$
 ^[a-zA-Z]{3}\\d{2}$

如果是 6 个字符,则第一个位置是字母,4 个数字,最后一个是另一个字母。

^[a-zA-Z]\\d{4}[a-zA-Z]$

但我似乎无法将所有内容拼凑在一起。

最佳答案

最简单的方法就是列出一组中每个可接受的模式,并用交替 (|) 分隔:

^(\\d{4}|\\d{5}|[a-zA-Z]\\d{4}|[a-zA-Z]{3}\\d{2}|[a-zA-Z]\\d{4}[a-zA-Z])$

但是您可以通过结合一些替代方案来稍微改进这一点:

^([a-zA-Z\\d]?\\d{4}|[a-zA-Z]{3}\\d{2}|[a-zA-Z]\\d{4}[a-zA-Z])$

关于java - 使用正则表达式验证可变长度字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777831/

相关文章:

java - 启动应用程序时在 Android 上找不到类异常

java - Hibernate自引用实体查询时重复字段

android - 如何在android中点击按钮打开键盘?

android - 在 Android 上显示 Admob 广告

android - 如何在我的应用程序中实现系统闹钟?

javascript - 功能优化,重音元音替换为非重音元音

java - 在 akka 中创建太多 Actor 不好吗?

java - 无法弄清楚如何检索 map 中的对象

正则表达式验证端口号

javascript - 正则表达式 - 如何匹配匹配和不匹配模式的所有字符组?