2014-10-29 106 views
1

我嘗試構建一個正則表達式來檢查有效的URL地址。現在我測試了不同的地址,一切都很好,但那些未來的(有效)地址的失敗:正則表達式在URL地址測試中失敗

url = "http://example.com/tr/vvf/index.php/docs/po/trf" 
    //url = "http://example-a.mydomain.com/test/ny" also not working 

    var pattern = new RegExp("(https|ftp|http)://[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?"); 
    pattern.test(url) 

我覺得因爲index.php/doc...任何想法如何解決它

+0

您需要轉義反斜線一次。因爲你的模式在雙引號內,不要忘記在驗證字符串時使用錨點。 – 2014-10-29 14:09:21

+0

我不認爲這是一個好主意嘗試找出一個正則表達式來匹配url。匹配的網址,密碼等應被視爲濫用正則表達式,而人們繼續以這種方式使用它。看看https://gist.github.com/gruber/8891611和http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-check-ifa-a- string-is-a-valid-url – HuStmpHrrr 2014-10-29 14:19:37

回答

0

只需使用正則表達式的文字,而不是RegExp對象:

var pattern = /(https|ftp|http):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\[email protected]?^=%&\/~+#-])?/; 

RegExp作品帶有字符串,需要你做雙溢出,使得\w成爲\\w在裏面。

+0

模式無效(未轉義/),其未錨定,因此匹配* http和'&'? – 2014-10-29 14:14:55