我想验证一个表达式。
我可以达到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,则可以调整代码。

07-26 00:58
查看更多