请参见字符部分:
URI由一组有限的字符组成,包括数字、字母和一些图形符号。其中的保留字符子集可以用于在URI中分隔语法组件,而其余字符(包括未保留的字符集和不作为分隔符的保留字符)则定义了每个组件的标识数据。
尽管有迹象表明仅支持数字、字母和一些符号,但您可以在附录B.使用正则表达式解析URI引用中看到建议使用的正则表达式来解析URI,它实际上可以匹配几乎所有字符:
以下是将格式良好的URI引用分解为其组件的正则表达式。
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
你所收集的[\w.~:/?#\[\]@!$&'()*+,;=%-]
模式太过严格,除非\w
是Unicode感知的(URI可能包含任何Unicode字母),否则它可能对你来说工作得更多或更少。
如果您计划匹配仅ASCII URL,请使用^[\x00-\x7F]+$
(任何1个以上的ASCII符号)或^[!-~]+$
(仅可见ASCII)。
^[...]*$
。 - Tamas Rev