我試圖尋找普通的舊字符串爲http開頭的網址,但我發現所有的正則表達式似乎並沒有在JavaScript中工作,也不能在javascript中找到這個示例。javascript純文本網址解析
var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
但是當我嘗試運行它,我得到「意外令牌|」錯誤。
我試圖尋找普通的舊字符串爲http開頭的網址,但我發現所有的正則表達式似乎並沒有在JavaScript中工作,也不能在javascript中找到這個示例。javascript純文本網址解析
var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
但是當我嘗試運行它,我得到「意外令牌|」錯誤。
好吧,評論似乎不夠,很難找到完整的答案。我重寫整個正確的正則表達式:(經測試,它的工作好)
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;
的i
在結束意味着「忽略大小寫」,因此有必要對這個正則表達式。
您正在使用/
作爲您的正則表達式分隔符,並且在正則表達式中(在www之前)也使用/
,所以正則表達式在www之前/之前實際終止。更改爲:
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
^^^^ escape here
可能需要注意的是,添加|在www之前將使www是可選的。 – AdamB 2010-09-07 02:27:21
這會在帶括號的網址上失敗 – 2013-12-20 20:38:05