2010-08-24 21 views
71

ciao Sto provando quello che ho pensato sarebbe stato un regex piuttosto facile in Javascript, ma mi sta dando un sacco di problemi. Voglio la possibilità di dividere una data tramite javascript suddividendolo con un '-', '.', '/' E ''.Javascript diviso domanda regex

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

Qual è la regex corretta per questo qualsiasi e tutto l'aiuto sarebbe grande.

risposta

114

È necessario inserire i caratteri che si desidera suddividere in un character class, che indica al motore di espressioni regolari "qualsiasi di questi caratteri è una corrispondenza". Per i vostri scopi, questo sarebbe simile:

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

Anche se trattini hanno un significato particolare nelle classi di caratteri come un identificatore di gamma (cioè [a-z] significa la stessa di [abcdefghijklmnopqrstuvwxyz]), se lo metti come l'ultima cosa nella classe esso è inteso come un trattino letterale e non ha bisogno di essere scappato.

a spiegare perché il vostro modello non ha funzionato, /-./ dice al motore delle espressioni regolari per abbinare un carattere trattino letterale seguito da un qualsiasi carattere (dots sono caratteri jolly nelle espressioni regolari). Con "02-25-2010", si dividerà ogni volta che si incontra "-2", perché il trattino corrisponde e il punto corrisponde a "2".

+3

Si potrebbe anche dire che un punto * non * ha alcun significato speciale all'interno di una classe di caratteri - invece di agire come un carattere jolly (che non avrebbe alcun senso), si comporta come un letterale. –

4

si potrebbe utilizzare

date.split(/-/); 

o

date.split('-'); 
+1

Inserisci un'interruzione di riga prima del codice e i 4 spazi lo formatteranno correttamente. – Brandon

4

Poi divisi su tutto tranne che numeri:

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

o semplicemente (qualsiasi cosa, ma i numeri):

date.split(/\D/); 
0

o semplicemente usare per le stringhe di data 2015/05/20 o 2015.05.20

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