簡體   English   中英

具有通配符的IP地址驗證

[英]IP address validation with wildcard character

String ip = "1.1.&.&";
String WILDCARD_CHARACTER = "&";
String REGEX_IP_ADDRESS_STRING = "(?:(?:"
        + WILDCARD_CHARACTER
        + "|25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:"
        + WILDCARD_CHARACTER + "|25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
Pattern p = Pattern.compile(REGEX_IP_ADDRESS_STRING1);
Matcher m = p.matcher(ip);
System.out.println("Does it match? " + m.matches());

上面編碼的IP驗證非常有效。 但是我想對通配符進行一些修改,這會導致問題。

當前場景:

  • 192.1。&。&------>是
  • 192.1.0.1 ------> True
  • &------>錯誤
  • 192.1。&------>錯誤

預期:

  • 192.1。&。&------>錯誤
  • 192.1.0.1 ------> True
  • &------>正確
  • 192.1。&------>正確

即我想在通配符之后對所有輸入進行通配。

正則表達式中的哪些修改可以幫助我實現這一目標? 誰能幫忙嗎?

我建議以下內容(我在此正則表達式中使用了文字& ;當然您可以將其更改為+ WILDCARD_CHARACTER構造):

Pattern regex = Pattern.compile(
    "^       # Anchor the match at the start of the string\n" +
    "(?:     # Match either...\n" +
    " &      # the wildcard character\n" +
    " |      # or a number between 0 and 255\n" +
    " (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\n" +
    " \\.    # followed by a dot, followed by...\n" +
    " (?:    # ...either...\n" +
    "  &     # the wildcard character\n" +
    "  |     # or a number etc. etc.\n" +
    "  (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\n" +
    "  \\.\n" +
    "  (?:\n" +
    "   &\n" +
    "   |\n" +
    "   (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\n" +
    "   \\.\n" +
    "   (?:\n" +
    "    &\n" +
    "    |\n" +
    "    (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\n" +
    "   )\n" +
    "  )\n" +
    " )\n" +
    ")\n" +
    "$        # Anchor the match at the end of the string", 
    Pattern.COMMENTS);

(?:2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。(?: 2 [0-4] \\ d | 25 [0- 5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。(?: 2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d )。(?: 2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)|(?:2 [0-4] \\ d | 25 [ 0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。(?: 2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。(?: 2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。&|(?:2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。(?: 2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。&|(?:2 [0-4] \\ d | 25 [0-5] | 1 \\ d \\ d | \\ d \\ d | \\ d)。&|&

一條線上全部符合您的要求

暫無
暫無

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

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