我正在尝试使用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 - 使用Regex验证可变长度的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18777831/

10-13 09:48