簡體   English   中英

正則表達式模式如何寫入以檢查 Java 中的至少一個字符串和數字?

[英]How regex pattern write to check at least one string and number in Java?

我有一個與正則表達式相關的問題,檢查至少一個字符串和數字,其中排除任何符號,如@!#%^&*。 我已經閱讀了很多文章,但仍然找不到作為我期望結果的正確答案。

示例:我有一個字符串,如:111AB11111

我的期望結果:如果輸入字符串

  1. “1111”=>假
  2. “AAA”=>假
  3. “1A” => 真
  4. “A1” => 真
  5. “111AAA111”=>真
  6. “AAA11111AA”=>真
  7. “#AA111BBB”=>假
  8. “111AAAA$”=>假

哪個java regex patter可以顯示上述情況 感謝您的寶貴時間檢查和建議 謝謝!

您可以將String#matches與以下正則表達式模式一起使用:

^[A-Z0-9]*(?:[0-9][A-Z0-9]*[A-Z]|[A-Z][A-Z0-9]*[0-9])[A-Z0-9]*$

示例 Java 代碼:

List<String> inputs = Arrays.asList(new String[] { "111AB", "111", "AB", "111AB$" });
for (String input : inputs) {
    if (input.matches("[A-Z0-9]*(?:[0-9][A-Z0-9]*[A-Z]|[A-Z][A-Z0-9]*[0-9])[A-Z0-9]*")) {
        System.out.println(input + " => VALID");
    }
    else {
        System.out.println(input + " => INVALID");
    }
}

這打印:

111AB => VALID
111 => INVALID
AB => INVALID
111AB$ => INVALID

請注意,實際與String#matches一起使用的正則表達式模式沒有前導/尾隨^/$錨點。 這是因為matches API 將正則表達式模式隱式應用於整個字符串。

為了解釋正則表達式模式,它只是嘗試以任何順序匹配至少有一個數字或字母的輸入。

這將實現您的目標:

^(?:[0-9]+[A-Za-z]|[A-Za-z]+[0-9])[A-Za-z0-9]*$

字母前面的數字,或數字前面的字母,后面只有字母和數字。

暫無
暫無

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

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