我想验证一个表达式。
我可以达到90%,但是我在某种情况下失败了。
我们如何添加表达式以确保在几个字符后的特定字符应为字母,而下一个字符应为数字。
Eg: [A-Z1-9]{1,30}?[A-Z]{0,1}$[1-9]{0,1}
模式最多可以包含32个字符,最后2个字符是可选的
如果字符超过30,则应以字母
[A-Z]
开头,并且只能出现一次{0,1}
并且第32个字符应该是数字[1-9]
,并且应该只出现一次,并且如果第31个字符存在则应该出现请问你能帮帮我吗 ?
最佳答案
尝试以下模式。这将匹配1-29个“正常”字符,或者与您的可选后缀恰好匹配30个字符。
// Matches 29 chars Matches 30 chars plus suffix
// | |
// ----------------------------------------------
// | || |
String pattern = "([A-Z\\d]{1,29})|([A-Z\\d]{30}([A-Z]\\d){0,1})";
// ^^^^^^^^ ^^^^^^^^
带下划线的部分(
^^^^
)应该进行调整,以描述前30个字符中允许的字符集。注意:我使用
0-9
作为有效数字,这是更正常的。如果您确实需要1-9
,则可以调整代码。