【发布时间】:2016-10-27 12:25:22
【问题描述】:
我对 java bean 验证的模式有一些疑问。 我在 java 类中有我的变量的模式
@Pattern(regexp = ".*[A-Z]+[[A-Z]\\p{Space}]+[A-Z\\p{Punct}]+([0-9]{1,10})?", message = "Error")*
private String name;
实际上它正在工作,但现在我必须将范围 {0,32} 添加到大写单词。 当我添加 [A-Z]{0,32} 时,它崩溃了
名称应符合以下值
- 个人资料 - 真实
- P - 真的
- 专业版 - 是的
- PROFILEPROFILEPROFILEPROFILEPROF - 是的
- PROFILEPROFILEPROFILEPROFILEPROFI - 错误
- 个人资料名称 - 错误
- PROFILE1 - 真
- PROFILE100 - 真
- PROFILE1000 - 真
- PROFILE1000000 - 真
- 1111 - 错误
- PROFILEPROFILE123456789PROFILE123 - 假
- profile_name - 错误
- *^^@ - 错误
- 个人资料名称 - 真
- PROFILE_NAME - 是的
- 简介。 - 是的
- &)12p - 错误
- 11个人资料 - 真
- 1234PROFILE - 真
- $%#PROFILE - 真
- 什么都没有 - 错误
如何更改/重构该模式以增加大写字母的范围以及 2、5、12 是否可行?
解决方案是“(?=.*[A-Z])[\p{Punct}A-Z0-9 ]{1,32}”
【问题讨论】:
-
完整的模式是什么?
-
实际上它是完整的模式并且它正在工作但是当我想为大写字母添加范围时 [A-Z]{0,32} 它打破了如何更改/重构该模式以可能添加大写的范围信?
-
添加范围是什么意思?
-
我的意思是名字应该是最小 - 1 和最大 - 32 个字符
-
有什么要求?正则表达式需要彻底改造,恕我直言。
标签: java regex validation java-8 javabeans