Javascript-Split-Regex-Frage

Lesezeit: 2 Minuten

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/);

Benutzer-Avatar
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());

Benutzer-Avatar
nicht zu gebrauchen

Dann teilen Sie es auf alles andere als Zahlen auf:

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

Benutzer-Avatar
Piotr

oder verwenden Sie einfach für Datumszeichenfolgen 2015-05-20 oder 2015.05.20

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

Benutzer-Avatar
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.

    – Reektrix

    22. Februar 2020 um 23:24 Uhr

1016230cookie-checkJavascript-Split-Regex-Frage

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy