Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

135
Visualizações
expresión almacenada en variable como cadena

Tengo este código que funciona.

 myDate = str.match(/(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g);

Sin embargo, me gustaría almacenar la expresión como una variable y usarla en su lugar. Algo como esto:

 pattern = "/(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g"; // I understand this is wrong somehow myDate = str.match(pattern);

¿Cómo almaceno mi expresión como una variable y la uso de la manera que he mostrado?

Gracias por adelantado.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Elimina las comillas:

 pattern = /(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g; myDate = "01-01-2021".match(pattern); console.log(myDate);

about 4 years ago · Juan Pablo Isaza Relatório

0

Como ocurre con la mayoría de las cosas en JavaScript, un patrón de expresión regular es un objeto, específicamente, un objeto RegExp. Como se explica en MDN :

Hay dos formas de crear un objeto RegExp: una notación literal y un constructor.

  • Los parámetros de la notación literal están encerrados entre barras y no usan comillas.
  • Los parámetros de la función constructora no están encerrados entre barras, pero usan comillas.

El punto adicional relevante para su ejemplo es que la bandera g se agrega al final de la notación literal, pero como un parámetro separado en la función constructora. Así que cualquiera de los siguientes funcionará:

 pattern = /(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g; pattern = new RegExp('\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})', 'g');

La razón por la que su intento no dio un error, pero no coincidió con la cadena, se explica en la página de MDN para la función de match :

Si regexp es un objeto que no es RegExp, se convierte implícitamente en RegExp mediante el uso de la nueva RegExp(regexp).

Entonces tu código era equivalente a esto:

 pattern = "/(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g"; myDate = str.match(new RegExp(pattern));

Cuando lo que querías era esto:

 pattern = "(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})"; myDate = str.match(new RegExp(pattern, "g"));
about 4 years ago · Juan Pablo Isaza Relatório

0

Ok, después de jugar conseguí que funcionara quitando las comillas al hacer esto.

 var pattern=/(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g; myDate = str.match(pattern);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda