2016-11-11 53 views
0

我想這個工作,它的工作原理,正則表達式不是數組

var regexp = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; 


if(self.shop_website().indexOf("http://") < 0 && self.shop_website() != ""){ 
    self.shop_website("http://" + self.shop_website()); 
} 
if(regexp.test(self.shop_website()) || self.shop_website() == ""){ 
.... 
} 

但是,當我試圖與陣列添加,

var domains =[".aero",".biz",".cat",".com",".coop",".edu",".gov",".info",".int",".jobs",".mil",".mobi",".museum"] 
domains = domains.join('|'); 
domains = domains.replace(/\./g,'') 
domains = domains + "|"; 
var regexp = new RegExp("/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.("+domains+"[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/");' 

這是行不通的。 此代碼用於驗證網站網址。例如, ,www.google.com,google.com.uk。

+0

因此,如何能我解決了這個問題?域在該部分是字符串。 – JMA

+0

你有沒有嘗試刪除你的域數組中的點? – OriolBG

+0

Instatiation不需要''嘗試'var regexp = new RegExp(「^(https?| ftp):\/\ /([a-zA-Z0-9 .-] +(:[a-zA 。-Z0-9&%$ - ] +)* @)*((25 [0-5] | 2 [0-4] [0-9] | 1 [0-9] {2} | [1- 9] [0-9])(\(25 [0-5] | 2 [0-4] [0-9] | 1 [0-9] {2} |?[1-9] [0 -9])){3} |。。([A-ZA-Z0-9 - ] + \)* [A-ZA-Z0-9 - ] + \( 「+結構域+」[A-ZA-Z] {2}))(:[0-9] +)*(\ /($ | [?A-ZA-Z0-9,\\ +%$#=〜_-] +))* $ 「);' –

回答

-1

您應該使用:

var regexp = new RegExp("^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.("+domains+"[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$"); 
  • 應該沒有封閉/.../同時使用RegExp
  • 你需要加倍逃避DOTA或任何地方,你有一個\