簡體   English   中英

包含 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,}

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM