Википедия определяет формат URI следующим образом (RFC 3986, раздел 3 (2005)):
URI = scheme:[//authority]path[?query][#fragment]
Непустая схема компонент, за которым следует двоеточие (:), , состоящее из последовательности символов, начинающихся с буквы и сопровождаемых любой комбинацией букв, цифр, плюс (+), точка (.) Или дефис (-).
Почему new URI("s:::::::::::::anytext")
не генерирует исключение URISyntaxException?
Мне также просто интересно - что еще может быть «неожиданно» допустимым здесь?
ОК, любой компонент (кромедля протокола) может содержать любой символ (если у нас не более одного #), включая «;
», «@
» и «/
» (ни один из них не требуется кодировать в процентах), объясняетсятот.
Но компонент протокола (схема) обязателен (?), И протокол должен быть отделен // от ЛЮБОГО другого последующего компонента, не так ли?