使用Regex验证可变长度字符串

时间:2013-09-13 03:29:41

标签: 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]$

我似乎无法将它们拼凑在一起。

1 个答案:

答案 0 :(得分:2)

最简单的方法是列出组中每个可接受的模式,以换项(|)分隔:

^(\\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])$