2016-11-11 9 views
0

Ich versuchte dies und es funktioniert,RegExp arbeiten nicht mit Arrays

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() == ""){ 
.... 
} 

Aber wenn ich mit dem Array hinzufügen versucht,

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.,?'\\+&%$#=~_-]+))*$/");' 

Das funktioniert nicht. Dieser Code wird zur Validierung der Website-URL verwendet. zum Beispiel www.google.com, google.com.uk.

+0

So kann, wie Ich löse dieses Problem? Domains ist eine Zeichenfolge in diesem Teil. – JMA

+0

Haben Sie versucht, die Punkte in Ihrem Domänen-Array zu entfernen? – OriolBG

+0

Instatiation erfordert nicht '//' try 'var regexp = neue 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 -] + \. ("+ Domänen +" [a-zA-Z] {2})) (: [0-9] +) * (\/($ | [a-zA-Z0-9.,? '\\ + &% $ # = ~ _-] +)) * $ ");' –

Antwort

-1

Sie verwenden sollten:

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.,?'\\+&%$#=~_-]+))*$"); 
  • Es sollte keine /.../ umschließt, während RegExp
  • mit Sie müssen DOTA entkommen verdoppeln oder überall haben Sie einzelne \