src/java.base/share/classes/java/net/URI.java

Print this page

        

@@ -2635,10 +2635,15 @@
     private static final long L_URIC_NO_SLASH
         = L_UNRESERVED | L_ESCAPED | lowMask(";?:@&=+$,");
     private static final long H_URIC_NO_SLASH
         = H_UNRESERVED | H_ESCAPED | highMask(";?:@&=+$,");
 
+    // scope_id = alpha | digit | "_" | "."
+    private static final long L_SCOPE_ID
+        = L_ALPHANUM | lowMask("_.");
+    private static final long H_SCOPE_ID
+        = H_ALPHANUM | highMask("_.");
 
     // -- Escaping and encoding --
 
     private final static char[] hexDigits = {
         '0', '1', '2', '3', '4', '5', '6', '7',

@@ -3224,11 +3229,11 @@
                     if (r > p) {
                         parseIPv6Reference(p, r);
                         if (r+1 == q) {
                             fail ("scope id expected");
                         }
-                        checkChars (r+1, q, L_ALPHANUM, H_ALPHANUM,
+                        checkChars (r+1, q, L_SCOPE_ID, H_SCOPE_ID,
                                                 "scope id");
                     } else {
                         parseIPv6Reference(p, q);
                     }
                     host = substring(p-1, q+1);