Las expresiones regulares, conocidas popularmente como "regex" o "regexp", son cadenas que describen un patrón de búsqueda. Puede usar expresiones regulares para verificar si una cadena contiene un patrón específico, extraer información de una cadena y reemplazar partes de una cadena con texto nuevo.
Aprenda la sintaxis básica de las expresiones regulares y cómo usarlas en JavaScript.
La sintaxis básica de las expresiones regulares
Hay dos formas de crear una expresión regular en JavaScript: usando un literal de expresión regular y usando el RegExp constructor.
Un literal de expresión regular consta de un patrón encerrado entre barras diagonales, seguido de una marca opcional.
Por ejemplo:
// Sin bandera
constante expresión_regex_1 = /pattern/
// Con bandera
constante expresión_regex_2 = /pattern/bandera
Una bandera es un parámetro opcional que puede agregar a una expresión regular para modificar su comportamiento. Por ejemplo:
constante regexFlag = /the/g;
El gramo indica que la expresión debe coincidir con todas las apariciones, no solo con la primera.
También puede crear una expresión regular usando el RegExp constructor. Por ejemplo:
constante expresiónregex = nuevoRegExp("Patrón", "gramo");
El RegExp El constructor toma dos parámetros: un patrón, una cadena o una expresión regular literal, y una(s) bandera(s).
Hay dos banderas bastante comunes que usará con la expresión regular en JavaScript:
- gramo: La bandera global hace que la expresión regular coincida con todas las ocurrencias del patrón en la cadena dada en lugar de una sola ocurrencia.
- i: El indicador que no distingue entre mayúsculas y minúsculas hace que la expresión regular ignore las mayúsculas y minúsculas del patrón y haga coincidir los caracteres en mayúsculas y minúsculas en la cadena dada.
Puede usar banderas juntas en una sola expresión en cualquier orden. Por ejemplo:
constante expresiónregex = nuevoRegExp("Patrón", "soldado americano");
Esta expresión coincidirá con todas las apariciones de "Patrón", independientemente del caso.
En las expresiones regulares, ciertos caracteres, conocidos como metacaracteres, tienen significados especiales. Puede usarlos para hacer coincidir tipos específicos de caracteres o patrones.
Estos son algunos de los metacaracteres más utilizados y sus significados:
- El carácter comodín (.): este carácter coincide con cualquier carácter individual excepto por una nueva línea. Es una herramienta útil para hacer coincidir patrones con caracteres desconocidos.
- La estrella Kleene (*): este carácter coincide con cero o más ocurrencias del carácter o grupo anterior. Permite que el carácter o grupo anterior aparezca cualquier número de veces en la cadena, incluido el cero.
- El carácter opcional (?): este carácter coincide con cero o una aparición de un carácter o grupo anterior.
- Anclaje de inicio de línea (^): este carácter solo coincide con el comienzo de una línea o cadena.
- Anclaje de fin de línea ($): este carácter coincide con el final de una línea o cadena.
- Juego de caracteres/clase ([]): un juego de caracteres coincide con cualquier carácter de un juego de caracteres en una cadena. Los defines usando corchetes [] y puede especificar un conjunto de caracteres fijos, caracteres especiales o determinados grupos de caracteres.
- Carácter de alternancia (|): este carácter coincide con el carácter o grupo anterior o siguiente. Funciona de manera similar al OR operador JavaScript.
- Carácter de agrupación (()): el carácter de agrupación le permite agrupar caracteres o subexpresiones, aplicarles operadores como una unidad y controlar el orden de las operaciones.
Probar una cadena contra una expresión regular en JavaScript
En JavaScript, puede probar una cadena con una expresión regular usando varios métodos.
Esta sección asume que tiene una comprensión básica de las expresiones y patrones regulares. Si no se siente cómodo con las expresiones regulares, consulte una guía para principiantes de expresiones regulares primero.
El método de prueba
El .prueba() El método devuelve un valor booleano que indica si la expresión regular coincide con la cadena o no. Este método toma una cadena para realizar la búsqueda como argumento. Es particularmente útil para controles simples.
Por ejemplo:
dejar expresión regular = /.com$/;
dejar cadena = "ejemplo.com";
consola.log (regex.prueba (str)); // verdadero
Esta expresión regular coincide con una cadena que termina con ".com".
El método ejecutivo
El .exec() método devuelve una matriz que contiene el texto coincidente y los grupos capturados o nulo si no encuentra una coincidencia. Este método toma una cadena para realizar la búsqueda como argumento. Es útil para expresiones regulares más complejas.
Por ejemplo:
dejar expresión regular = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
dejar cadena = "123-456-7890";
dejar resultado = expresión regular.exec (str);
si (resultado !== nulo) {
consola.registro(`${resultado[0]} es un número de teléfono válido`);
} demás {
consola.registro("Numero de telefono invalido");
}
La expresión regular anterior coincide con una cadena que comienza con un " opcional(", tres dígitos y un opcional ")". A continuación, busca un opcional "-", ".", o espacio, seguido de tres dígitos. Finalmente busca un opcional "-", ".", o un espacio seguido de cuatro dígitos al final de la cadena.
Esta expresión regular coincide con los números de teléfono en el formato de "(xxx) xxx-xxxx", "xxx-xxx-xxxx", "xxx.xxx.xxxx" o "xxx xxx xxxx".
Si encuentra una coincidencia, .exec() devuelve una matriz que contiene el texto coincidente y los grupos capturados (definidos entre paréntesis). Incluirá cada grupo como un elemento adicional en la matriz que devuelve. Esto le permite acceder a partes específicas del texto coincidente, lo que puede ayudarlo a extraer información de una cadena.
El método de reemplazo
El .reemplazar() El método busca una coincidencia entre una expresión regular y una cadena y reemplaza el texto coincidente con un texto de reemplazo especificado. Este es un método de objetos de cadena y toma una expresión regular y una cadena de reemplazo como argumentos.
Por ejemplo:
dejar cadena = "El rápido zorro marrón salta sobre el perro perezoso".;
dejar expresión = /The/gi;
dejar newString = string.replace (expresión, "a");
consola.log (nuevaCadena); // "un rápido zorro marrón salta sobre un perro perezoso".
Este ejemplo llama al reemplazar() método en el cadena variable, pasando la expresión regular, expresión. La expresión regular coincidirá con todas las apariciones de "The" en la cadena, independientemente del caso. La llamada al método replace le indica que reemplace cada ocurrencia con la cadena "a".
Consideraciones de rendimiento al usar expresiones regulares
Aunque las expresiones regulares ayudan a hacer coincidir y manipular cadenas, también pueden ser costosas en términos de rendimiento. Hacer patrones lo más específicos posible y mantenerlos simples es vital para mantener su rendimiento.