2017-06-25 3 views
0

Wie deklariert assoziatives Array von Regex? Dies ist nichtJavascript, deklarieren assoziatives Array von Regex-Ausdrücken

Arbeits
var Validators = { 

    url : /^http(s?)://((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(/)?$/gm 

}; 

EDITED: Jetzt arbeiten!

Dies wird in JS (wie @ Operator in C#)

url : `/^http(s?)://((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(/)?$/gm` 

werden jedoch immer noch nicht durch doppelte Flucht, ein in JS und andere in Regex gültig. Wenn der Ausdruck klein ist, kann das nackte Auge manuell sowohl für JS als auch für Regex entkommen. Mein Gehirn kann einfach :) nicht

Um Verwendung Strings als getestet auf regex101.com beispielsweise alle erforderlichen Strings als ‚Reihe‘ wie folgt erklärt werden sollte:

var exp = String.raw`^(http(s?):\/\/)?(((www\.)?[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+)|(\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b))(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$`; 



var strings = [ 
    String.raw`http://www.goo gle.com`, 
    String.raw`http://www.google.com`, 
    ]; 
+0

nicht verwenden 'g'. das macht sie klebrig. –

+1

Nun, Ihr Code wirft einen Syntaxfehler, beheben Sie Ihre Regex, so dass es keinen Syntaxfehler hat und versuchen Sie es erneut –

+1

Um Ihnen bei der Fehlersuche zu helfen, fügen Sie Ihren regulären Ausdruck (nur der Teil zwischen den '/' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' (ohne die Schrägstriche) in https://regex101.com/ und notiere dann die Fehlermeldungen und die roten Markierungen. Sie zeigen Ihnen genau, was Sie beheben müssen. –

Antwort

1

es Wrap mit new RegExp() und Flucht schlitzt

var Validators = { 

    url : new RegExp(/^http(s?):\/\/((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(\/)?$/gm) 

}; 
+0

Ich habe deine Antwort akzeptiert und stimme, weil du mir den Hinweis gegeben hast :) kann mit '' in JS entkernt werden. Vielen Dank! – user1797147

1

Ihre regex hat Schrägstriche in ihm. Dieses Symbol muss maskiert werden, da es den Anfang und das Ende des Ausdrucks angeben soll. Versuchen Sie \/.

+0

Danke. Ich habe getestet und in der Tat, Regex ist kaputt. Ich habe gerade von einem anderen StackOverflow genommen .. hmm ... das bedeutet, dass einige Leute ihren Code vor dem Post als gültige Antworten testen sollten. – user1797147