字符串的最大长度为5(包括一个字母)。如果没有字母,则允许的数字长度为4。
允许的数字:0
到9999
允许使用一个字母(仅当字符串至少有一个数字时)。一些例子:
允许:1a
,a2
,1111a
,1a22
,9999
不允许:99999
,11111
,a
,aa
我试过了:
^(?:[0-9]|[a-z](?=[^a-z]*$)){1,5}$
适用于案例:1a
,a2
,1111a
,1a22
,9999
。但它也错误地允许99999
。
有关如何限制数字长度的任何帮助吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
^\d{1,4}$|^(?=\d*[a-z]\d*$)[a-z\d]{1,5}$
我们首先使用^\d{1,4}$
来解决最简单的问题。如果失败,第二种选择,第二种选择接管。它首先要做的是使用(?=\d*[a-z]\d*$)
断言字符串中只有一个字母。如果前瞻成功,匹配位置将返回到字符串的开头,允许我们再次匹配整个字符串,这次是[a-z\d]{1,5}$
。
此时无需验证其余字符是否为数字。我本可以使用(?=[^a-z]*[a-z][a-z]*$
代替。我们只需要确保它查看整个字符串。我只是认为它更加自我记录\d*
。
请注意,此正则表达式将匹配仅包含字母的字符串。如果您想确保至少有一位数,请将最终{1,5}
更改为{2,5}
。
这是 demo 。
答案 2 :(得分:0)
使用{size}
限制正则表达式中String的长度。
我更新正则表达式:
^(?:(?=.*[a-z])(?:[0-9]|[a-z]){1,5}|[0-9]{4})$