包含 x 或 y 位数的输入字符串的 Bean 验证正则表达式
Bean validation regex for an input string containing x or y number of digits
我想检查输入字符串是否包含 x 或 y 位数。我正在使用 JSR-303
bean 验证。可以检查吗?如果是,什么正则表达式是合适的?为了。例如。 “123dfn5657”或“34fdg8959413”如果针对“^(\d{7}|\d{9})$”之类的内容进行验证应该有效。
您可以使用 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
我建议使用 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,}
我想检查输入字符串是否包含 x 或 y 位数。我正在使用 JSR-303
bean 验证。可以检查吗?如果是,什么正则表达式是合适的?为了。例如。 “123dfn5657”或“34fdg8959413”如果针对“^(\d{7}|\d{9})$”之类的内容进行验证应该有效。
您可以使用 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
我建议使用 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,}