Hallo, ich versuche, was ich für eine ziemlich einfache Regex in Javascript hielt, aber es bereitet mir viele Probleme. Ich möchte die Möglichkeit haben, ein Datum per Javascript aufzuteilen, entweder durch ein ‘-‘,’.’, “https://stackoverflow.com/” und ‘ ‘.
var date = "02-25-2010";
var myregexp2 = new RegExp("-.");
dateArray = date.split(myregexp2);
Was ist die richtige Regex dafür, jede Hilfe wäre großartig.
Sie müssen die Zeichen, die Sie aufteilen möchten, in a setzen Charakterklasse, die der Engine für reguläre Ausdrücke mitteilt, dass “eines dieser Zeichen eine Übereinstimmung ist”. Für Ihre Zwecke würde dies so aussehen:
date.split(/[.,\/ -]/)
Obwohl Bindestriche in Zeichenklassen eine besondere Bedeutung als Bereichsbezeichner haben (z [a-z] bedeutet dasselbe wie [abcdefghijklmnopqrstuvwxyz]), wenn Sie es als letztes in der Klasse angeben, wird es als wörtlicher Gedankenstrich verstanden und muss nicht maskiert werden.
Um zu erklären, warum Ihr Muster nicht funktioniert hat, /-./ weist die Engine für reguläre Ausdrücke an, einen wörtlichen Gedankenstrich gefolgt von einem beliebigen Zeichen (Punkte sind Platzhalterzeichen in regulären Ausdrücken). Bei “25.02.2010” würde es jedes Mal geteilt, wenn “-2” gefunden wird, da der Bindestrich zu “2” passt und der Punkt zu “2”.
Das könnte man auch mit einem Punkt erwähnen nicht innerhalb einer Zeichenklasse eine besondere Bedeutung haben – anstatt als Platzhalterzeichen zu fungieren (was keinen Sinn machen würde), fungiert es als Literal.
– Bobby Jack
17. Juli 2014 um 10:20 Uhr
oder einfach (alles außer Zahlen):
date.split(/\D/);
Allan Ruine
könntest du einfach verwenden
date.split(/-/);
oder
date.split('-');
Setzen Sie einen Zeilenumbruch vor Ihren Code und die 4 Leerzeichen formatieren ihn richtig.
– Brandon
23. Januar 2012 um 17:36 Uhr
Angenommen, Ihre Zeichenfolge ist:
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 aufteilen:
let rawElements = str.split(new RegExp('[,;\n]', 'g'));
Schließlich müssen Sie möglicherweise die Elemente im Array kürzen:
let elements = rawElements.map(element => element.trim());
nicht zu gebrauchen
Dann teilen Sie es auf alles andere als Zahlen auf:
date.split(/[^0-9]/);
Piotr
oder verwenden Sie einfach für Datumszeichenfolgen 2015-05-20 oder 2015.05.20
date.split(/\.|-/);
Omar
versuchen Sie es stattdessen
date.split(/\W+/)
Können Sie erklären, warum dies eine bessere Antwort ist als die bereits zuvor geposteten 5+? Und wie funktioniert es eigentlich?
– mjuarez
19. Dezember 2019 um 20:56 Uhr
Das hat für mich von allen Antworten am besten funktioniert.