Espero que esto no sea demasiado difícil, pero no soy muy hábil en expresiones regulares. Tengo una cadena que contiene dos fechas y me gustaría extraer las dos fechas en una matriz o algo usando JAVASCRIPT.

Aquí está mi cadena: "Estoy disponible el jueves 28 de octubre de 2009 hasta el sábado 7 de noviembre de 2009"

Me gustaría que la matriz sea: arr [0] = "jueves 28 de octubre de 2009" arr [1] = "sábado 7 de noviembre de 2009"

¿Es esto posible?

Gracias por toda su ayuda!

0
vcuankit 30 oct. 2009 a las 16:36

3 respuestas

La mejor respuesta

No necesita una expresión regular para una cadena estática (en su mayoría) como esa. Qué tal si:

var s = "I am available Thursday, October 28, 2009 through Saturday, November 7, 2009";
var dates = s.split('available')[1].split('through');
trim(dates[0]); // "Thursday, October 28, 2009"
trim(dates[1]); // "Saturday, November 7, 2009"

trim() elimina los espacios en blanco iniciales + finales:

function trim(str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
2
Crescent Fresh 30 oct. 2009 a las 13:43

"(Domingo | lunes | martes | etc.), (enero | febrero | etc.) [1-3]? [0-9], [0-9] [0-9] [0-9] [0-9] ", ¿tal vez? La sintaxis puede no ser exacta para Javascript, pero eso debería transmitir la idea. Tendría el potencial de falsos positivos (39 de enero), pero tratar de tener en cuenta las reglas complejas del calendario en una expresión regular es un error.

0
Brian Schroth 30 oct. 2009 a las 13:57

Con solo expresiones regulares, solo podría hacer que funcione para formatos de fecha muy específicos. Entonces esto coincidirá con sus palabras exactas:

var s="I am available Thursday, October 28, 2009 through Saturday, November 7, 2009";
arr=s.match(/(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)[^\d]*\d*, \d*/g);
alert(arr);

Pero no si alguien acaba de escribir: "28 de octubre de 2009".

0
rjmunro 30 oct. 2009 a las 13:54