On Fri, 20 Aug 2021 11:22:07 GMT, Daniel Fuchs <[email protected]> wrote:

>> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java
>>  line 1703:
>> 
>>> 1701:             return text;
>>> 1702:         }
>>> 1703:         if (text.matches("^[^:/?#]+:.+$")) {
>> 
>> Why not use `java.net.URI` API to determine if the link contains a scheme?
>
> I assume the link is in an HTML document and goes in an HTML document. If you 
> wanted to use java.net.URI, depending on where from `text` comes from and 
> whereto it goes, you might need first to decode it using URLDecoder, and then 
> you might need to re-encode it before spitting it out... That's a lot of 
> operations where things could go wrong, especially if the link contains a 
> query string.

That said a stricter regexp (unless I'm mistaken) could be: 
`^[a-zA-Z][a-zA-Z0-9+-.]*:.*$`
[ from RFC 2396:     scheme        = alpha *( alpha | digit | "+" | "-" | "." ) 
]

-------------

PR: https://git.openjdk.java.net/jdk/pull/5198

Reply via email to