Estoy tratando de descubrir cómo seleccionar fechas (nota: todas las fechas, no solo fechas específicas) en un párrafo usando (supongo) jQuery / Javascript.

Para dar un ejemplo, el sitio web obtiene un montón de texto de una base de datos, y en ese texto se incluye una fecha en el siguiente formato: (DD / MM / AAAA). Solo quiero resaltar cada vez que aparece, pero no estoy seguro de cómo, porque a veces la fecha puede ser 02/09/2014 o 13/10/2014, por lo que no puedo buscar una fecha determinada y resaltarla.

Cualquier ayuda es apreciada :) ¡Gracias!

-1
andofcourse 3 sep. 2014 a las 05:11

2 respuestas

La mejor respuesta

Creo que lo que estás buscando es algo como esto. Aquí hay un jsFiddle Example

  $("div").html($("div").html().replace(/(\d{1,2}\/\d{1,2}\/\d{4})/gi, "<span style='background-color:yellow;'>$1</span>"));

Aquí está el mismo código anterior solo en diferentes líneas para facilitar la lectura.

    $("div")
   .html( 
      $("div")
        .html()
         .replace(/(\d{1,2}\/\d{1,2}\/\d{4})/gi, 
          "<span style='background-color:yellow;'>$1</span>"
       )
   );

Primero agrupamos el regEx con un paréntesis izquierdo y derecho. Esto ahora puede ser referenciado como parámetro $ 1. Luego buscamos el patrón que estamos buscando (no olvides agregar el gi al final para que busques todas las ocurrencias, no solo la primera.

Luego, reemplazamos nuestro hallazgo con una etiqueta de intervalo para poder diseñar el contenido, en este caso un fondo amarillo y aún queremos la fecha que encontramos, por lo que agregamos $ 1 para poner la fecha dentro de las etiquetas de intervalo.

Espero que esto ayude

1
Bob Tate 3 sep. 2014 a las 17:35

Aquí hay una expresión regular súper básica que encontrará series de números 'datelike':

\ d {1,2} / \ d {1,2} / \ d {4}

Pruébelo aquí: http://regexhero.net/tester/

Usando un texto como "Este es un texto para el héroe regex el 2/9/2014. Creo que en su mayor parte funcionará para lo que está buscando el 3/9/2014".

De hecho, aquí hay algunos javascript para jugar (usando jquery):

http://jsfiddle.net/5z7bz4zm/2/

<div>
    This is some text for the regex hero on 9/2/2014. I think for the most part it will work for what you are looking for on 9/3/2014.
</div>
$(document).ready(function() {

    $("div").text($("div").text().replace(/\d{1,2}\/\d{1,2}\/\d{4}/, "<span>caught ya</span>"));
});
1
C Bauer 3 sep. 2014 a las 02:08