Index: modules/luni/src/main/java/java/net/URL.java =================================================================== --- modules/luni/src/main/java/java/net/URL.java (revision 568386) +++ modules/luni/src/main/java/java/net/URL.java (working copy) @@ -259,8 +259,23 @@ // According to RFC 2396 scheme part should match // the following expression: // alpha *( alpha | digit | "+" | "-" | "." ) - if (!protocol.matches("\\A\\p{Alpha}[\\p{Alnum}+-.]*\\z") || //$NON-NLS-1$ - protocol.indexOf('/') >= 0) { + + boolean fl=true; + if (protocol.charAt(0)<'A' || protocol.charAt(0)>'z' || (protocol.charAt(0)>'Z' && protocol.charAt(0)<'a')) + fl = false; + for (int curPos=1; curPos'z' || protocol.charAt(curPos)=='/') { + fl = false; + break; + } + if ((protocol.charAt(curPos)>'9' && protocol.charAt(curPos)<'A') || (protocol.charAt(curPos)>'Z' && protocol.charAt(curPos)<'a')) { + fl = false; + break; + } + } + +// if (!protocol.matches("\\A\\p{Alpha}[\\p{Alnum}+-.]*\\z") || //$NON-NLS-1$ + if (!fl || protocol.indexOf('/') >= 0) { protocol = null; index = -1; } else {