wake-up-neo.net

Javascript-Split-Regex-Frage

hallo ich versuche, was ich für ein ziemlich einfaches Regex in Javascript hielt, aber es macht mir eine Menge Ärger. Ich möchte die Möglichkeit, ein Datum mittels Javascript aufzuteilen, indem es entweder durch '-', '.', '/' Und '' geteilt wird.

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

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

86
Craig

Sie müssen die Zeichen, die Sie teilen möchten, in eine Zeichenklasse einfügen, die der Engine für reguläre Ausdrücke mitteilt, dass "jedes dieser Zeichen übereinstimmt". Für Ihre Zwecke würde dies folgendermaßen aussehen:

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

Obwohl Bindestriche in Zeichenklassen als Bereichsspezifizierer eine besondere Bedeutung haben (dh [a-z] bedeutet das Gleiche wie [abcdefghijklmnopqrstuvwxyz]), wird dies als letztes Element in der Klasse verstanden, bedeutet dies, dass es sich um einen Literal-Bindestrich handelt, der nicht mit Escapezeichen versehen werden muss.

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

134

oder nur (alles außer Zahlen):

date.split(/\D/);
7
Jo3y

sie könnten einfach verwenden 

date.split(/-/);

oder

date.split('-');
6
Allan Ruin

Dann teilen Sie es auf etwas außer Zahlen:

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

Angenommen, Ihre Zeichenfolge lautet:

let str = `Word1
Word2;Word3,Word4,Word5;Word7
Word8,Word9;Word10`;

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

  • Doppelpunkt
  • Semikolon
  • Neue Zeile

Sie könnten die Zeichenfolge wie folgt teilen:

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

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

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

oder nur für Datumsstrings 2015-05-20 oder 2015.05.20 verwenden

date.split(/\.|-/);
0