我想检查输入字符串是否包含x或y位数。我正在使用JSR-303
bean验证。有可能检查吗?如果是,那么正则表达式是否合适?对于。例如。如果对“^(\ d {7} | \ d {9})$”等内容进行验证,则“123dfn5657”或“34fdg8959413”应该有效。
答案 0 :(得分:1)
您可以使用java.util.regex.Pattern
javadoc。
在您的情况下,例如,假设您想要定义1,2或4位(但不是3位)的输入,您可以使用这样的结构:
String[] samples = {
"1",
"12",
"1234",
"123",
"123a",
"1a234",
"a1234b",
"a1bcd2e",
"a1bcd2e3",
"a1bde2e34"
};
for (String s: samples) {
System.out.println(s + "\t" +
java.util.regex.Pattern.matches("(([a-z]*\\d){1}|([a-z]*\\d){2}|([a-z]*\\d){4})[a-z]*", s));
}
输出将是:
1 true
12 true
1234 true
123 false
123a false
1a234 true
a1234b true
a1bcd2e true
a1bcd2e3 false
a1bde2e34 true
答案 1 :(得分:0)
我建议使用https://github.com/flexguse/validation-violation-checker测试你的JSR303注释bean,这是一个小JUnit插件。
如果您使用Eclipse作为IDE,我建议使用QuickRex插件https://marketplace.eclipse.org/content/quickrex。
使用这两个工具,您应该非常快速地进行试错,以创建正则表达式,这可能是
[0-9]{1,}[a-z]{1,}[0-9]{1,}