2010-09-07 97 views
0

我試圖尋找普通的舊字符串爲http開頭的網址,但我發現所有的正則表達式似乎並沒有在JavaScript中工作,也不能在javascript中找到這個示例。javascript純文本網址解析

這是一個我試圖從herehere使用:

var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/; 

但是當我嘗試運行它,我得到「意外令牌|」錯誤。

回答

1

好吧,評論似乎不夠,很難找到完整的答案。我重寫整個正確的正則表達式:(經測試,它的工作好)

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i; 

i在結束意味着「忽略大小寫」,因此有必要對這個正則表達式。

+1

可能需要注意的是,添加|在www之前將使www是可選的。 – AdamB 2010-09-07 02:27:21

+0

這會在帶括號的網址上失敗 – 2013-12-20 20:38:05

0

您正在使用/作爲您的正則表達式分隔符,並且在正則表達式中(在www之前)也使用/,所以正則表達式在www之前/之前實際終止。更改爲:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/; 
            ^^^^ escape here 
+1

不僅存在,也有一些「/」字符後太 – pepkin88 2010-09-07 02:00:58

+0

忘了提,這個正則表達式是區分大小寫的,所以你寧願這樣寫:??'VAR測試=/\ B(:(?: HTTPS | FTP |文件):\/\/WWW \ | FTP \) - A-Z0-9 + @#\ /%=〜_ | $:,?!]。* [A-Z0-9 + &@#\ /%=〜_ | $]/i;' – pepkin88 2010-09-07 02:08:19