如何檢查用戶是否向我的應用程序輸入了一個url到終端中?是否有某種我可以使用的正則表達式?檢查來自用戶的輸入是C中的url嗎?
我在Linux中從終端獲取輸入並將其存儲在char str [100]變量中。
編輯* 我需要檢查他們只能輸入實際存在的URL,如果可能的話。
如何檢查用戶是否向我的應用程序輸入了一個url到終端中?是否有某種我可以使用的正則表達式?檢查來自用戶的輸入是C中的url嗎?
我在Linux中從終端獲取輸入並將其存儲在char str [100]變量中。
編輯* 我需要檢查他們只能輸入實際存在的URL,如果可能的話。
我使用這個正則表達式。儘管如此,它不允許......。
^https?://(((0|([1-9][0-9]{0,1}))(\.(0|([1-9][0-9]{0,1}))){3})|([a-zA-Z]([a-zA-Z0-9$\[email protected]\.&+*"\'\(\),]|(%[0-9a-fA-F][0-9a-fA-F]))*(\.([a-zA-Z]([a-zA-Z0-9$\[email protected]\.&+!*"\'\(\),]|(%[0-9a-fA-F][0-9a-fA-F]))*))*))(/|((/([a-zA-Z]([a-zA-Z0-9$\[email protected]\.&+!*"\'\(\),]|(%[0-9a-fA-F][0-9a-fA-F]))*))*))$
PS:我從RFC
標準庫有一些正則表達式函數(man正則表達式)。您也可以使用PCRE等第三方庫。
編輯*我需要檢查,他們只能進入實際存在的,如果這是可能的一個網址構建它。
您可以對給定的URL發出HEAD請求並檢查返回的http狀態碼。如果您忽略臨時故障,它應該告訴您資源是否可訪問,例如make http HEAD request in C using libcurl。
我如何可以檢查用戶輸入了網址到終端應用?是否有某種我可以使用的正則表達式?
rfc 3986提供的正則表達式打破向下一個合式 URI引用成它的組分:
/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
注2件事:
要驗證網址,你可以使用上述正則表達式拆分輸入,並檢查各部分是你的具體情況如有效,該計劃是'http'
,查詢&片段是空的,等的代碼應該更簡單理解和調試超過一個巨大的不透明正則表達式。
同意。最好使用通用組件拆分,然後驗證碎片。 (更重要的是,正確驗證主機名之類的東西不僅僅需要字符串處理。) – 2012-02-26 14:17:36
您需要檢查例如是http://stackoverflow.com/rubbish有效嗎? – Mark 2012-02-26 13:41:10