2012-03-16 15 views
6

Estoy intentando dividir la siguiente cadena ("27-07-2015 07:25:00 AM"). Actualmente usoDivisión de números y letras en una cadena que contiene ambos

var parts = date.split(/[^0-9a-zA-Z]+/g); 

que se traduce en

["02", "27", "2012", "03", "25", "00AM"] 

El problema es con la parte 00AM. Quiero que se separe también. Así, el resultado ideal sería:

["02", "27", "2012", "03", "25", "00", "AM"] 
+1

¿El formato de la entrada consistentemente es una fecha en ese formato? – gahooa

+0

¿Está interesado en dividir o en partes reales de una cuerda? –

+0

Lo estoy usando de hecho para analizar las fechas de esa manera. Sergio, no estoy seguro de lo que quieres decir. Quiero obtener las partes correctas y lo intento dividiendo la cadena. –

Respuesta

20

Si usted está buscando secuencias de letras o números, pero no tanto una secuencia mixta, se puede hacer esto ...

"08-27-2015 07:25:00AM".match(/[a-zA-Z]+|[0-9]+/g) 

lo que resulta en ...

["08", "27", "2015", "07", "25", "00", "AM"] 

a ambos lados de la |, tenemos una secuencia de una o más letras y una secuencia de o ne o más números. Por lo tanto, cuando se encuentra con una letra, recogerá todas las letras contiguas hasta que llegue a una letra que no sea letra, en cuyo punto recoge todos los números contiguos, y así sucesivamente.

Cualquier otro carácter simplemente no coincide, por lo que no forma parte del resultado.

+1

Eso es perfecto, incluso divide '02Junio2015'. ¡Gracias! –

1
var date = "08-27-2015 07:25:00AM"; 
var parts = date.replace(/([AP]M)$/i, " $1").split(/[^0-9a-z]+/ig); 

var date = "05June2012"; 
var parts = date.replace(/([a-z]+)/i, " $1 ").split(/[^0-9a-z]+/ig); 
+0

Si bien podría escribir un divisor genérico, necesitaría saber qué esperar en la matriz resultante. Así que no estoy seguro si tendría algún propósito útil en lo que respecta al análisis, es decir, si no conoce el formato de entrada, la matriz resultante sería de diferente tamaño y tendría diferentes tipos de elementos en diferentes ubicaciones. ¿Cómo sabrías qué hacer con eso? –

0

Si la fecha es siempre en ese formato que puede utilizar:

var parts = date.match(/([0-9]{2})-([0-9]{2})-([0-9]{4})\s([0-9]{2}):([0-9]{2}):([0-9]{2})(AM|PM)/).splice(1)

0

me gustaría utilizar una biblioteca fecha para analizar los campos que desee. De esta forma puede manejar múltiples formatos y no preocuparse por el análisis con expresiones regulares. Mientras que DateJS es un poco viejo, funciona bien para el análisis.

Cuestiones relacionadas