Javascript Split Regex Frage


116

Hallo, ich versuche, was ich dachte, wäre ein ziemlich einfacher Regex in Javascript, aber es macht mir viel Ärger. Ich möchte die Möglichkeit haben, ein Datum über Javascript zu teilen, indem ich es entweder durch ein '-', '.', '/' Und '' teile.

var date = "02-25-2010";
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2);

Was ist die richtige Regex für diese jede Hilfe wäre großartig.

Antworten:


174

Sie müssen die Zeichen, die Sie aufteilen möchten, in eine Zeichenklasse einfügen , die der Engine für reguläre Ausdrücke mitteilt, dass "jedes dieser Zeichen eine Übereinstimmung ist". Für Ihre Zwecke würde dies so aussehen:

date.split(/[.,\/ -]/)

Obwohl Bindestriche in Zeichenklassen als Bereichsspezifizierer eine besondere Bedeutung haben (dh [a-z]dasselbe bedeuten wie [abcdefghijklmnopqrstuvwxyz]), bedeutet dies , wenn Sie es als letztes Element in der Klasse angeben , einen wörtlichen Bindestrich und muss nicht maskiert werden.

Um zu erklären, warum Ihr Muster nicht funktioniert hat, /-./weist es die Engine für reguläre Ausdrücke an, mit einem wörtlichen Bindestrich gefolgt von einem beliebigen Zeichen übereinzustimmen ( Punkte sind Platzhalterzeichen in regulären Ausdrücken). Mit "02-25-2010" würde es jedes Mal geteilt, wenn "-2" angetroffen wird, da der Bindestrich und der Punkt mit "2" übereinstimmen.


3
Sie können auch erwähnen, dass ein Punkt innerhalb einer Zeichenklasse keine besondere Bedeutung hat - anstatt als Platzhalterzeichen zu fungieren (was keinen Sinn ergibt ), fungiert er als Literal.
Bobby Jack

11

oder einfach (alles andere als Zahlen):

date.split(/\D/);

6

Sie könnten nur verwenden

date.split(/-/);

oder

date.split('-');

1
Setzen Sie einen Zeilenumbruch vor Ihren Code und die 4 Leerzeichen formatieren ihn richtig.
Brandon

5

Teilen Sie es dann auf alles andere als Zahlen auf:

date.split(/[^0-9]/);

3

Angenommen, Ihre Zeichenfolge lautet:

let str = `word1
word2;word3,word4,word5;word7
word8,word9;word10`;

Sie möchten die Zeichenfolge durch die folgenden Trennzeichen teilen:

  • Doppelpunkt
  • Semikolon
  • Neue Zeile

Sie können die Zeichenfolge folgendermaßen aufteilen:

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

Schließlich müssen Sie möglicherweise die Elemente im Array zuschneiden:

let elements = rawElements.map(element => element.trim());


-1

Versuchen Sie dies stattdessen

date.split (/ \ W + /)


Können Sie erklären, warum dies eine bessere Antwort ist als die bereits zuvor veröffentlichten 5+? Und wie funktioniert es eigentlich?
Mjuarez

Dies funktionierte tatsächlich am besten aus allen Antworten für mich.
Reectrix
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.