Pregunta de expresión regular dividida de JavaScript


116

hola Estoy intentando lo que pensé que sería una expresión regular bastante fácil en Javascript, pero me está dando muchos problemas. Quiero la capacidad de dividir una fecha a través de JavaScript dividiendo por un '-', '.', '/' Y ''.

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

¿Cuál es la expresión regular correcta para esto? Cualquier ayuda sería genial.

Respuestas:


174

Necesita poner los caracteres que desea dividir en una clase de caracteres , que le dice al motor de expresión regular "cualquiera de estos caracteres coincide". Para sus propósitos, esto se vería así:

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

Aunque los guiones tienen un significado especial en las clases de caracteres como un especificador de rango (es decir, [a-z]significa lo mismo que [abcdefghijklmnopqrstuvwxyz]), si lo coloca como lo último en la clase, se considera que significa un guión literal y no es necesario escapar.

Para explicar por qué su patrón no funcionó, /-./le dice al motor de expresiones regulares que coincida con un carácter de guión literal seguido de cualquier carácter (los puntos son caracteres comodín en las expresiones regulares). Con "02-25-2010", se dividiría cada vez que se encuentre "-2", porque el guión coincide y el punto coincide con "2".


3
También puede mencionar que un punto no tiene ningún significado especial dentro de una clase de carácter; en lugar de actuar como un carácter comodín (lo que no tendría ningún sentido), actúa como un literal.
Bobby Jack

11

o simplemente (cualquier cosa menos números):

date.split(/\D/);

6

podrías usar

date.split(/-/);

o

date.split('-');

1
Coloque un salto de línea antes de su código y los 4 espacios lo formatearán correctamente.
Brandon

5

Luego divídalo en cualquier cosa menos en números:

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

3

Digamos que su cuerda es:

let str = `word1
word2;word3,word4,word5;word7
word8,word9;word10`;

Desea dividir la cadena por los siguientes delimitadores:

  • Colon
  • Punto y coma
  • Nueva línea

Podrías dividir la cadena así:

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

Finalmente, es posible que deba recortar los elementos de la matriz:

let elements = rawElements.map(element => element.trim());


-1

prueba esto en su lugar

fecha.split (/ \ W + /)


¿Puede explicar por qué esta es una mejor respuesta que las 5+ ya publicadas antes? ¿Y cómo funciona realmente?
mjuarez

En realidad, esto funcionó mejor de todas las respuestas para mí.
reectrix
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.