Wie breche ich einen regulären Ausdruck in JavaScript up
-
08-10-2019 - |
Frage
String.prototype.is_email = function() {
return this.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b/);
};
Ich versuche, alle meine Javascript-Dateien zu Flusen unter Verschluss Linter zu erhalten ( http://code.google.com/closure/utilities/docs/linter_howto.html ); Wie breche ich einen regulären Ausdruck mit der / regex / Syntax.
nach obenZeile 24, E: 0110: Zeile zu lang (200 Zeichen). Gefunden: 1 Fehler, einschließlich 0 neue Fehler, in 1 Dateien (0 Dateien OK).
Lösung
Sie können den RegExp(pattern, modifiers)
und das Muster als String übergeben. Die Zeichenfolge kann mit Verkettung in kleinen Teilen aufgebaut werden.
Andere Tipps
Sehr hackish: eine neue Zeile in der regexp hinzufügen (die lange Linie in kleinere zu brechen), dass Newline entkommen, indem sie einen \
vorangestellt und legen Sie eine {0}
direkt, nachdem es zu verhindern, dass berücksichtigt wird, je ...
var regex = /abc\
{0}def/;
regex.test("abcdef") // true
regex.text("abc\ndef") // false
Ich schrieb eine einfache Funktion zum Kombinieren von regulären Ausdrücken ihnen zu machen Debuggen ein wenig mehr überschaubar.
var joinRegExp = function() {
var args = Array.prototype.slice.call(arguments);
return new RegExp(args.reduce(function(str, exp) {
return str + exp.toString().replace(/\//g, '');
}, ''));
};
So können Sie Ihren Ausdruck in so etwas wie diese brechen könnten.
var local = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+/;
var localOpt = /(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*/;
var domain = /(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+/;
var tld = /(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b/;
Und dann kommen sie.
var emailPattern = joinRegExp(local, localOpt, /@/, domain, tld);
Sie können lesen Sie in diesem zupfen für eine Demo.