2012-11-07 27 views
0

URI中是否存在协议名称的标准http:或文件:?我试图开发一个正则表达式,它将检测URI是否以协议名称开头,但我不确定哪些字符是允许的。URI中有协议名称的标准吗?

+1

Aaaaand回答后我发现了一个重复,[我显然也回答了,尽管有点不同](http://stackoverflow.com/questions/3641722/valid-characters-for-uri-schemes/3641775#3641775 )... – BoltClock

回答

4

RFC 3986, section 3.1有语法:

scheme  = ALPHA *(ALPHA/DIGIT/"+"/"-"/".") 

这意味着协议名称必须以字母开头,并且可以跟任意数量的字母,数字或+-.符号。协议名称不区分大小写(即,HTTPhttp应该被视为相同),但通常它们应该被规范化为小写形式(因此HTTP应该成为http)。

+0

拼图的另一小块,计划组件分隔符(“:”)在这里定义https://tools.ietf.org/html/rfc3986#section-3 – nine9ths

+0

+1如果你对于所有关联的RFC3986正则表达式代码片段,请查看我的文章“[正则表达式URI验证](http://jmrware.com/articles/2009/uri_regexp/URI_regex.html)”。 – ridgerunner