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 oben

Zeile 24, E: 0110: Zeile zu lang (200 Zeichen). Gefunden: 1 Fehler, einschließlich 0 neue Fehler, in 1 Dateien (0 Dateien OK).

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top