[英]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,}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.