2012-11-07 26 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