SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Electiva II
Clase 10
Expresiones Regulares
JavaScript
Ing. José Ricardo Tillero UPTAEB
Expresiones Regulares JavaScript
Expresiones Regulares
 Las expresiones regulares son patrones que se utilizan para hacer coincidir
combinaciones de caracteres en cadenas.
 Las expresiones regulares permiten comprobar si una cadena de texto se ajusta
a un determinado tipo de estructura o patrón.
 Las expresiones regulares no son exclusivas del lenguaje javascript, otros
lenguajes de programación también las usan, de hecho javascript las ha
importado de ellos, por lo que son muy similares tanto en Java, como en PHP y
otros lenguajes.
 Un expresión regular consiste en:
 Un patrón (pattern) que se usa para localizar textos que se ajusten a él.
 Modificadores (opcionales) que nos indican como aplicar el patrón.
Expresiones Regulares JavaScript
Crear una Expresión Regular
 Construyes una expresión regular en una de estas dos formas:
 Usando una expresión regular literal, que consiste en un patrón encerrado
entre barras, como sigue:
> let re = /ab+c/;
o
> var re = /ab+c/;
 O llamando a la función constructora del objeto RegExp, de la siguiente
manera:
> let re = new RegExp('ab+c');
o
> var re = new RegExp('ab+c');
Expresiones Regulares JavaScript
Escribir un patrón de Expresión Regular
 Un patrón de expresión regular se compone de caracteres simples, como /abc/, o una combinación de
caracteres simples y especiales, como /ab*c/ o /Capítulo (d).d*/.
 Usar patrones simples:
 Los patrones simples se construyen con caracteres para los que deseas encontrar una coincidencia
directa. Por ejemplo, el patrón /abc/ coincide con combinaciones de caracteres en cadenas solo
cuando ocurre la secuencia exacta "abc" (todos los caracteres juntos y en ese orden). Tal
coincidencia tendría éxito en las cadenas "Hola, ¿conoces tu abc?" y "Los últimos diseños de
aviones evolucionaron a partir de slabcraft". En ambos casos, la coincidencia es con la
subcadena "abc". Ahora para la siguiente cadena "Grab crab", no hay ninguna coincidencia porque
aunque contiene la subcadena "ab c", no contiene la subcadena "abc" exacta.
 Usar caracteres especiales:
 Cuando la búsqueda de una coincidencia requiere algo más que una coincidencia exacta, como por
ejemplo buscar una o más 'b', o encontrar espacios en blanco, puedes incluir caracteres especiales
en el patrón. Por ejemplo, para hacer coincidir una sola "a" seguida de cero o más "b" seguidas de
"c", usarías el patrón /ab*c/: el * después de "b" significa "0 o más apariciones del elemento
anterior". En la cadena "cbbabbbbcdebc", este patrón coincidirá con la subcadena "abbbbc".
Expresiones Regulares JavaScript
Comprobar un texto con Expresiones Regulares
 El caso más simple es comprobar si una determinada cadena de texto está contenida en otra:
> expresion = /martes/;
 Esta expresión comprobará si la cadena "martes" está contenida en otra. Al aplicar un método de
búsqueda devolverá verdadero si la cadena contiene martes, se dice entonces que la cadena se ajusta al
patrón, y devolverá falso si no lo contiene.
 Para ello utilizaremos el método test(), el cual se emplea de la siguiente manera:
> resultado = expresionRegular.test("texto a comprobar");
 La variable resultado devolverá el valor booleano true si la cadena contiene la expresión al menos una
vez, y false si no la contiene.
 Veamos el ejemplo para la expresión anterior.
> texto1 = "Los martes voy al gimnasio.";
> texto2 = "Los miércoles voy a clase de inglés.";
> buscar = /martes/;
> alert(buscar.test(texto1)); //devuelve true
> alert(buscar.test(texto2)); //devuelve false
Expresiones Regulares JavaScript
Comprobar en grupos de caracteres con Expresiones Regulares
 Si lo que se quiere buscar es un grupo de caracteres, estos irán encerrados entre corchetes:
expresion = /[aeiou]/;
 Esta expresión buscará cualquiera de las vocales en el texto y en ese caso se ajustará al patrón. Los
corchetes definen caracteres que debe contener la cadena. Probemos con un ejemplo similar al anterior:
> texto1 = "a = 4.65";
> texto2 = "b = 17.3";
> buscar = /[aeiou]/;
> alert(buscar.test(texto1)); //devuelve true
> alert(buscar.test(texto2)); //devuelve false
 En éste ejemplo el primer texto se ajusta al patrón, al tener una vocal, y el segundo no, al no contener
vocales.
 Sin embargo los elementos dentro del corchete pueden formar grupos homogéneos, tales como cifras
consecutivas o letras consecutivas del alfabeto, en ese caso ponemos la primera y la última y un guion
en medio, es decir:
/[a-f]/, es lo mismo que poner /[abcdef]/
/[1-5]/, es lo mismo que poner /[12345]/
Expresiones Regulares JavaScript
Comprobar en grupos de caracteres con Expresiones Regulares
 Si queremos incluir el guion dentro de la expresión anterior lo podemos poner al final: /[a-f-]/, o
también al principio, pero con una barra inclinada al revés para indicar que es un carácter de escape:
/[-a-f]/.
 Los caracteres de escape tienen aquí la misma función que en los textos, poder escribir ciertos
símbolos que sirven para el código.
 El siguiente ejemplo comprueba si el texto tiene alguno de los números del 1 al 5:
> texto1 = "Pedro tiene 62 años";
> texto2 = "Pablo tiene 67 años";
> buscar = /[1-5]/;
> alert(buscar.test(texto1)); //devuelve true
> alert(buscar.test(texto2)); //devuelve false
Expresiones Regulares JavaScript
Comprobar en grupos de caracteres con Expresiones Regulares
 Clases de caracteres: Para los casos más habituales hay unos caracteres especiales que indican si la cadena
tiene un determinado tipo de caracteres:
 /w/: Contiene caracteres alfanuméricos.
 /W/: Devuelve false si sólo contiene caracteres alfanuméricos.
 /d/: Contiene dígitos o cifras.
 /D/: Devuelve false si sólo contiene dígitos.
 /s/: Contiene alguno de los caracteres que definen espacios en blanco (espacio, tabulador, retorno de
carro ... ).
 /S/: Devuelve false si sólo contiene caracteres que definen espacios en blanco.
 Ejemplos con estos caracteres especiales.:
Ejemplo 1 Ejemplo 2
> texto1 = "María cumple 12 años";
> texto2 = "María cumple doce años";
> buscar = /d/;
> alert(buscar.test(texto1)); //devuelve true
> alert(buscar.test(texto2)); //devuelve false
texto1 = "Hoy es lunes";
texto2 = " ";
buscar = /w/;
alert(buscar.test(texto1)); //devuelve true
alert(buscar.test(texto2)); //devuelve false
Expresiones Regulares JavaScript
Comprobar en grupos de caracteres con Expresiones Regulares
 Otros caracteres especiales: El signo /./ indica cualquier carácter, con lo que se suele usar para comprobar
que la cadena no está vacía, tal como muestra este ejemplo::
> texto1 = "Hoy es lunes";
> texto2 = "";
> buscar = /./;
> alert(buscar.test(texto1)); //devuelve true
> alert(buscar.test(texto2)); //devuelve false
 Como se ve el punto es un carácter especial, por lo que si queremos buscar un punto en la cadena deberemos
ponerlo con una barra inclinada inversa delante: /./, así buscaremos si la cadena contiene algún punto.
 Los signos ^ al principio de la expresión regular y $ al final indican que la cadena de texto debe coincidir
completamente con la expresión regular, es decir , comprueba que la cadena se ajusta completamente al patrón
en lugar de comprobar si lo contiene. Así por ejemplo, si queremos comprobar si una cadena es un número
escribiremos: /^d$/, como en el siguiente ejemplo:
> texto1 = "casa";
> texto2 = "Mi casa es grande";
> buscar = /^casa$/;
> alert(buscar.test(texto1)); //devuelve true
> alert(buscar.test(texto2)); //devuelve false
Expresiones Regulares JavaScript
Crear el objeto RegExp
 Las expresiones regulares tienen una sintaxis propia, esto es lo que suele hacerlas algo complicadas, ya
que no es igual que el resto de elementos de javascript. Para empezar cualquier expresión regular debe
estar encerrada entre los caracteres / ... /:
expresion = / ...codigo_expresion .../modificadores o banderas
> var myRe = /d(b+)d/g;
 Al guardar la expresión regular en una variable, ésta se convierte en un objeto del tipo RegExp. También
podemos crear la expresión regular mediante el método general para crear objetos:
expresion = new RegExp('..codigo_expresion... ', 'modificadores o banderas')
> var myRe = new RegExp('d(b+)d', 'g');
 En este caso no debemos poner el código entre barras inclinadas.
Expresiones Regulares JavaScript
Cuantificadores de patrones de objetos RegExp
 Los cuantificadores son signos que se ponen detrás de un determinado patrón
de búsqueda, y que indican las veces que debe aparecer en el texto para
ajustarse al patrón.
 /a+/: La cadena debe contener el patrón (letra "a") una o más veces.
 /a*/: El patrón (letra a) debe aparecer cero o más veces.
 /a?/: El patrón debe aparecer cero o una vez.
 /a{3}/: El patrón debe aparecer exactamente tres veces (en lugar del 3 puede ser
cualquier otro número).
 /a{3,8}/: El patrón debe aparecer entre 3 y 8 veces (ambos inclusive).
Expresiones Regulares JavaScript
Modificadores o banderas de objetos RegExp
 Los modificadores o "flags" son unas letras con un significado especial que se
ponen detrás de la expresión regular, y matizan la forma de buscar. Estos son
los siguientes:
 g: /a/g - Explora la cadena hasta el final.
 i: /a/i - No distingue entre mayúsculas y minúsculas.
 m: /a/m - Permite usar varios ^ y $ en la cadena.
 s: /a/s - Incluye el salto de línea en el comodín punto .
 x: /a/x - Ignora los espacios en el patrón .
 Si escribimos más de un modificador en una expresión regular, debemos
ponerlos en el mismo orden que aparecen arriba, es decir, en orden alfabético.
Expresiones Regulares JavaScript
Propiedades de los objetos RegExp
 Las siguientes propiedades se usan con el objeto RegExp y no con cualquier expresión regular concreta, por tanto se
escribirán de la forma: RegExp.propiedad; son de sólo lectura, por lo que no las podemos modificar directamente, sin
embargo se actualizan automáticamente cada vez que se emplea un método con un objeto regular, ya sea con los
métodos de RegExp o con los métodos de String, correspondiendo la cadena explorada a la obtenida tras el último
método empleado. las propiedades son:
 $1 ... $9: índices que contienen las partes agrupadas con paréntesis en el patrón de búsqueda.
 RegExp.input: Cadena que se ha explorado.
 RegExp.lastMatch: Última coincidencia encontrada.
 RegExp.multiline: Variable booleana que indica si la cadena explorada incluye saltos de línea.
 RegExp.lastParent: Última coincidencia encontrada con un patrón entre paréntesis.
 RegExp.leftContext: Desde el principio de la cadena hasta la coincidencia hallada.
 RegExp.rightContext: Desde la coincidencia hasta el final de la cadena.
 RegExp.global: Con false (por defecto) devuelve solo el primer elemento encontrado. Con true devuelve todos los elementos
encontrados.
 RegExp.ignoreCase: Si está a true haremos el matching sensible a mayúsculas (por defecto a false).
 RegExp.lastIndex: La posición por la que empezar la búsqueda (por defecto a 0).
 RegExp.source: Contiene la expresión regular.
 Estas propiedades (excepto lastIndex) no pueden ser modificadas después de creado el objeto.
Expresiones Regulares JavaScript
Propiedades de los objetos RegExp
 Ejemplos:
> var re = new RegExp('j.*t', 'gmi');
> re.global
< true
> re.global = false;
< false
> re.global
< true
> var re = /j.*t/ig;
> re.global
< true
> re.source
< "j.*t"
Expresiones Regulares JavaScript
Métodos de los Objetos RegExp
 El objeto RegExp tiene varios métodos, pero también se pueden usar algunos métodos del objeto String
para trabajar con expresiones regulares.
 test(): Este método busca el patrón en el texto y devuelve el valor booleano true si el texto se ajusta, si no
es así devolverá false. Su sintaxis es:
buscar = patron.test("cadena");
Donde buscar es la variable donde se devuelve el valor (true o false); patron es la variable que contiene la
expresión regular, y "cadena" es la cadena de texto en la que se busca; si la cadena se pasa de forma
literal llevará las comillas, si la pasamos en una variable, no llevará comillas.
 exec(): Este método busca la expresión en el texto, y devuelve el primer texto que concuerda con la
expresión buscada. Si no encuentra ninguna coincidencia, entonces devuelve null. Su sintaxis es la
siguiente:
buscar = patron.exec(texto);
Donde patron es la variable que contiene la expresión regular, y texto es la variable que contiene la cadena
de texto. El resultado de este método es el trozo de cadena que se ajusta al patrón, y se guarda en la
variable buscar.
Expresiones Regulares JavaScript
Métodos de los Objetos RegExp
 exec(): Este método tiene además dos propiedades, la propiedad index, la cual nos indica la posición en la
que se encuentra la cadena buscada, y la propiedad input, la cual devuelve la cadena completa en la que
estamos realizando la búsqueda. La posición que indica la propiedad index es la del primer carácter
encontrado en el trozo de cadena que coincide. este se empieza a contar a partir del 0.
posicion = patron.exec(texto).index;
textoCompleto = patron.exec(texto).input;
 compile(): El método compile convierte el patrón en un formato interno para que la ejecución sea más
rápida. Por ejemplo, esto permite un uso más eficiente de expresiones regulares en bucles. Su sintaxis es la
siguiente:
compilado = patron.compile(patron);
La variable compilado guardará la expresión regular ya compilada.
Expresiones Regulares JavaScript
Métodos de los Objetos RegExp
 Ejemplos:
> /j.*t/.test("Javascript")
< false
> /j.*t/i.test("Javascript")
< true
> /s(amp)le/i.exec("Sample text")
< ["Sample", "amp"]
> /a(b+)a/g.exec("_abbba_aba_")
< ["abbba", "bbb"]
Expresiones Regulares JavaScript
Métodos de los Objetos RegExp
 Ejemplos:
<!DOCTYPE html>
<html>
<head>
<title>implementación de el método exec()</title>
<style type="text/css">
#caja { width: 400px; border: 1px black solid; float: right; }
</style>
<script type="text/javascript">
function elMetodo(){
patron = /hidalgo/gi; //expresión regular.
texto = document.getElementById("mitexto").innerHTML;
respuesta = patron.exec(texto); //buscar mediante exec()
elemento = document.getElementById("caja");
elemento.innerHTML = "palabra buscada: "+ respuesta +"<br/> ";
posicion = respuesta.index; //propiedad index: posición.
elemento.innerHTML += "posición: "+ posicion +"<br/> ";
textoCompleto = respuesta.input; //propiedad input: texto completo.
elemento.innerHTML += "Texto en que se encuentra: "+ textoCompleto;
}
</script>
</head>
<body>
<h1>Metodo exec para expresiones regulares.</h1>
<div id="caja"></div>
<h4>Texto de ejemplo:</h4>
<p id="mitexto">En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
adarga antigua, rocín flaco y galgo corredor. Una olla de algo más vaca
que carnero, salpicón las más noches, duelos y quebrantos los sábados,
lentejas los viernes, algún palomino de añadidura los domingos, consumían
las tres partes de su hacienda.</p>
<h4>Buscar la palabra "hidalgo"</h4>
<form action="#" name="elmetodo">
<p><input type="button" value="Metodo exec" onclick="elMetodo()" /></p>
</form>
</body>
</html>
Expresiones Regulares JavaScript
Métodos de String que aceptan Expresiones Regulares
 Los siguientes métodos de la clase String pueden usarse para trabajar con las expresiones regulares.
En ellos la expresión regular o patrón la escribiremos siempre como parámetro o argumento del
método, es decir, dentro del paréntesis.:
 search(): Busca la expresión regular en la cadena de texto, si la encuentra devuelve un número indicando
su posición (el del primer carácter), empezando a contar desde 0, si no la encuentra devuelve -1. Su sintaxis
es la siguiente:
buscar = texto.search(patron);
Donde texto es la variable que contiene el texto donde se busca, y patron es la expresión regular. La
variable buscar contendrá el número en el que se encuentra la primera coincidencia (empezando a contar
por el 0), si no hay coincidencia en la cadena, éste será -1.
 split(): Este método transforma la cadena en un array, la expresión regular indica cual es el delimitador
que separa los elementos del array. por ejemplo, con la siguiente expresion regular /s/ cada vez que se
encuentra un espacio se crea un nuevo elemento del array, con lo que el array contendria las palabras de la
cadena. Su sintaxis es parecida a la del método anterior:
miarray = texto.split(patron);
Expresiones Regulares JavaScript
Métodos de String que aceptan Expresiones Regulares
 match(): Devuelve un arreglo que contiene todas las coincidencias, incluidos los grupos de captura, o null
si no se encuentra ninguna coincidencia. Su sintaxis es la siguiente:
hallado = texto.match(patron);
Donde la variable texto es el texto en el que se hará el emparejamiento, patron contiene la expresión
regular, y hallado es la variable que contiene el array con todas las ocurrencias.
 replace(): Este método devuelve la cadena original, en la que se ha remplazado las coincidencias
encontradas por la expresión regular, por otro texto pasado también como argumento. Por lo tanto a este
método le pasaremos dos argumentos. que serán la expresión regular, y la cadena a remplazar. Su sintaxis
es la siguiente:
nuevoTexto = texto.replace(patron,remplazo);
Donde la variable texto es el texto en el que se explora, patron contiene la expresión regular, y remplazo
es la variable que contiene el nuevo texto que se va a poner en lugar del encontrado por la expresión .
Expresiones Regulares JavaScript
Métodos de String que aceptan Expresiones Regulares
 Ejemplos:
> var s = "HelloJavaScriptWorld“;
< undefined
> s.match(/a/);
< ["a"]
> s.match(/a/g);
< ["a", "a"]
> s.match(/j.*a/i);
< ["Java"]
> s.search(/j.*a/i);
< 5
> s.replace(/[A-Z]/g, '');
< "elloavacriptorld"
< s.replace(/[A-Z]/, '');
> s.replace(/[A-Z]/g, "_$&");
< "_Hello_Java_Script_World"
> s.replace(/([A-Z])/g, "_$1");
< "_Hello_Java_Script_World"
> function replaceCallback(match){return "_" + match.toLowerCase();}
< undefined
> s.replace(/[A-Z]/g, replaceCallback);
< "_hello_java_script_world"
Expresiones Regulares JavaScript
Métodos de String que aceptan Expresiones Regulares
 Ejemplos:
> "juanmanuel.garrido@softonic.com".replace(/(.*)@.*/, "$1");
< "juanmanuel.garrido"
> var sMail = "juanmanuel.garrido@softonic.com";
< undefined
> var rRegExp = /(.*)@(.*).(.*)/;
< undefined
> var fCallback = function () { args = arguments;
return args[1] + " de " args[2].toUpperCase(); }
< undefined
> sMail.replace(rRegExp, fCallback);
< "juanmanuel.garrido de SOFTONIC"
> args
< ["juanmanuel.garrido@softonic.com", "juanmanuel.garrido", "softonic", "com", 0,
"juanmanuel.garrido@softonic.com"]
> var csv = 'one, two,three ,four';
> csv.split(',');
< ["one", " two", "three ", "four"]
> csv.split(/s*,s*/)
< ["one", "two", "three", "four"]
> "test".replace('t', 'r')
< "rest"
> "test".replace(new RegExp('t'), 'r')
< "rest"
> "test".replace(/t/, 'r')
< "rest"
Expresiones Regulares JavaScript
Métodos de String que aceptan Expresiones Regulares
 Ejemplo usando match:
En el siguiente ejemplo, se usa match para hallar "Capítulo" seguido de 1 o más
caracteres numéricos seguidos de un punto decimal y caracteres numéricos cero o más
veces. La expresión regular incluye el flag i por lo que las mayúsculas serán ignoradas.
> cadena = "Para más información, vea Capítulo 3.4.5.1";
> expresion = /(capítulo d+(.d)*)/i;
> hallado = cadena.match(expresion);
> console.log(hallado);
Esto devuelve un array que contiene Capítulo 3.4.5.1, Capítulo 3.4.5.1,.1
"Capítulo 3.4.5.1" es el primer emparejamiento y el primer valor referenciado por
(Capítulo d+(.d)*).
".1" es el segundo valor referenciado por (.d).
Expresiones Regulares JavaScript
Métodos de String que aceptan Expresiones Regulares
 Ejemplo usando las banderas global e ignoreCase para ignorar las mayúsculas con
match:
El siguiente ejemplo demuestra el uso de los flags global e ignorar mayúsculas con match.
Todas las letras de A hasta E y de a hasta e son devueltas, en su propio elemento dentro
del array..
> var cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
> var expresion = /[A-E]/gi;
> var array_emparejamientos = cadena.match(expresion);
> console.log(array_emparejamientos);
array_emparejamientos será ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 [abc]
Busca coincidencias en los caracteres del patrón
> "some text".match(/[otx]/g)
< ["o", "t", "x", "t"]
 [a-z]
Busca coincidencias en el rango de caracteres.
 [a-d] es lo mismo que [abcd].
 [a-z] busca todas los caracteres en minúscula.
 [a-zA-Z0-9_] busca todo los caracteres, números y el guion bajo.
> "Some Text".match(/[a-z]/g)
< ["o", "m", "e", "e", "x", "t"]
> "Some Text".match(/[a-zA-Z]/g)
< ["S", "o", "m", "e", "T", "e", "x", "t"]
 [ˆabc]
Devuelve lo que NO coincida con el patrón.
> "Some Text".match(/[^a-z]/g)
< ["S", " ", "T"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 a|b
Devuelve a o b (la barra indica OR).
> "Some Text".match(/t|T/g);
< ["T", "t"]
> "Some Text".match(/t|T|Some/g);
< ["Some", "T", "t"] [a-z]
 a(?=b)
Devuelve a solamente si está seguida de b.
> "Some Text".match(/Some(?=Tex)/g);
< null
> "Some Text".match(/Some(?= Tex)/g);
< ["Some"]
 a(?!b)
Devuelve a solamente si NO está seguida de b.
> "Some Text".match(/Some(?! Tex)/g);
< null
> "Some Text".match(/Some(?!Tex)/g);
< ["Some"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 
Carácter de escape utilizado para localizar caracteres especiales utilizados en el patrón como literales.
> "R2-D2".match(/[2-3]/g)
< ["2", "2"]
> "R2-D2".match(/[2-3]/g)
< ["2", "-", "2"]
 n
Nueva línea.
 r
Retorno de carro (Para comenzar una nueva línea se usa rn en Windows, n en Unix y r en Mac).
 f
Salto de página.
 t
Tabulación.
 v
Tabulación vertical.
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 s
Espacio en blanco o cualquiera de las 5 secuencias de escape de arriba.
> "R2n D2".match(/s/g)
< ["n", " "]
 S
Lo contrario de lo de arriba. Devuelve todo excepto espacios en blanco y las 5 secuencias de escape de antes. Lo mismo
que [ˆs].
> "R2n D2".match(/S/g)
< ["R", "2", "D", "2"]
 w
Cualquier letra, numero o guion bajo. Lo mismo que [A-Za-z0-9_].
> "Some text!".match(/w/g)
< ["S", "o", "m", "e", "t", "e", "x", "t"]
 W
Lo contrario que w.
> "Some text!".match(/W/g)
< [" ", "!"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 d
Localiza un numero. Lo mismo que [0-9].
"R2-D2 and C-3PO".match(/d/g)
< ["2", "2", "3"]
 D
Lo contrario de d. Localiza caracteres no numéricos. Lo mismo que [ˆ0-9] o [ˆd].
> "R2-D2 and C-3PO".match(/D/g)
< ["R", "-", "D", " ", "a", "n", "d", " ", "C", "-", "P", "O"]
 b
Coincide con un limite de palabra (espacio, puntuación, guion…).
> "R2D2 and C-3PO".match(/[RD]2/g)
< ["R2", "D2"]
> "R2D2 and C-3PO".match(/[RD]2b/g)
< ["D2"]
> "R2-D2 and C-3PO".match(/[RD]2b/g)
< ["R2", "D2"]
 B
Lo contrario que b.
> "R2-D2 and C-3PO".match(/[RD]2B/g)
< null
> "R2D2 and C-3PO".match(/[RD]2B/g)
< ["R2"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 ^
Representa el principio de la cadena donde se está buscando. Si tenemos el modificador m representa el principio de
cada línea.
> "regularnregularnexpression".match(/r/g);
< ["r", "r", "r", "r", "r"]
> "regularnregularnexpression".match(/^r/g);
< ["r"]
> "regularnregularnexpression".match(/^r/mg);
< ["r", "r"]
 $
Representa el final de la cadena donde se está buscando. Si tenemos el modificador m representa el final de cada línea.
> "regularnregularnexpression".match(/r$/g);
< null
> "regularnregularnexpression".match(/r$/mg);
<4 ["r", "r"]
 .
Representa a cualquier carácter excepto la nueva línea y el retorno de carro.
> "regular".match(/r./g);
< ["re"]
> "regular".match(/r.../g);
< ["regu"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 *
Hace matching si el patrón precedente ocurre 0 o más veces.
/.*/ devolverá todo incluido nada (cadena vacía).
> "".match(/.*/)
< [""]
> "anything".match(/.*/)
< ["anything"]
> "anything".match(/n.*h/)
< ["nyth"]
 ?
Hace matching si el patrón precedente ocurre 0 o 1 vez.
> "anything".match(/ny?/g)
< ["ny", "n"]
 +
Representa a cualquier carácter excepto la nueva línea y el retorno de carro.
> "anything".match(/ny+/g)
< ["ny"]
> "R2-D2 and C-3PO".match(/[a-z]/gi)
< ["R", "D", "a", "n", "d", "C", "P", "O"]
> "R2-D2 and C-3PO".match(/[a-z]+/gi)
< ["R", "D", "and", "C", "PO"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 {n}
Hace matching si el patrón precedente ocurre exactamente n veces.
> "regular expression".match(/s/g)
< ["s", "s"]
> "regular expression".match(/s{2}/g)
< ["ss"]
> "regular expression".match(/bw{3}/g)
< ["reg", "exp"]
 {min,max}
Hace matching si el patrón precedente ocurre entre min y max veces.
Se puede omitir max (solo tendrá mínimo) No se puede omitir min.
> "doooooooooodle".match(/o/g)
< ["o", "o", "o", "o", "o", "o", "o", "o", "o", "o"]
> "doooooooooodle".match(/o{2}/g)
< ["oo", "oo", "oo", "oo", "oo"]
> "doooooooooodle".match(/o{2,}/g)
< ["oooooooooo"]
> "doooooooooodle".match(/o{2,6}/g)
< ["oooooo", "oooo"]
Expresiones Regulares JavaScript
Sintaxis de los caracteres de busquedas en Expresiones Regulares
 (pattern)
Cuando el patrón está en paréntesis, se captura y se guarda para poder utilizarlo en sustituciones (captura de patrones).
Estas capturas están disponibles en $1, $2,… $9.
> "regular expression".replace(/(r)/g, '$1$1')
< "rregularr exprression"
> "regular expression".replace(/(r)(e)/g, '$2$1')
< "ergular experssion"
 {?:patternx}
Patrón no capturable (no disponible en $1, $2, …).
> "regular expression".replace(/(?:r)(e)/g, '$1$1')
< "eegular expeession"
Expresiones Regulares JavaScript
Ejemplos de aplicación de Expresiones Regulares
Comprobar un e-mail:
 Veamos cómo construir una expresión regular en la que comprobamos que el usuario ha escrito un e-mail en un formulario cuando
se le pide. Lo que realmente comprobamos es que el texto que ha escrito el usuario tiene una cierta estructura que coincide con la
de un e-mail, es decir que tiene que tener una estructura como ésta:
micorreo@servidor.com
 Donde los símbolos arroba "@" y el punto "." son obligatorios. tanto el texto "micorreo" como "servidor" pueden ser variables;
el texto de después del punto ("com") puede ser variable con ciertas restricciones: siempre tiene que ir en minúscula, y además
tener siempre dos o tres caracteres.
 Eso en una expresión regular se traduce en lo siguiente:
/[w]+@{1}[w]+.[a-z]{2,3}/
 En primer lugar comprobamos que hay una cadena de texto; [w]+ detrás de ella debe estar el signo arroba una vez @{1},
después se escribe otra cadena de texto; [w]+, después tiene que haber escrito un punto . y por último el país u organización,
el cual está siempre escrito en letras minúsculas y con dos o tres letras: [a-z]{2,3}.
 Como lo que se trata es de comprobar que el texto escrito coincida completamente con el e-mail, y no que éste esté dentro de una
cadena, deberemos poner los signos ^ $ al principio y final de la expresión regular, por lo que ésta quedará de la siguiente forma:
/^[w]+@{1}[w]+.[a-z]{2,3}$/
Expresiones Regulares JavaScript
Ejemplos de aplicación de Expresiones Regulares
Comprobar un e-mail:
 A continuación como utilizar la ER:
 En HTML tenemos el siguiente formulario:
<form action="#" name="formu1">
<p align="center"><input type="text" name="email" size="30" />Escribe un e-mail</p><br/>
<p align="center"><input type="button" onclick="comprueba()" value="Comprobar" /></p>
</form>
 Y el código JavaScript para la comprobación es la siguiente función:
function comprueba(){
tuEmail = document.formu1.email.value
tuEmail = tuEmail.toString()
patron = /^[w]+@{1}[w]+.+[a-z]{2,3}$/
respuesta = patron.test(tuEmail)
alert("resultado: "+respuesta)
}
Expresiones Regulares JavaScript
Ejemplos de aplicación de Expresiones Regulares
Comprobar una URL:
 Expresión regular para comprobar páginas web. El nombre de la página tiene que estar completo, es decir con
el "http://" del principio.
patron = /^http[s]?://[w]+([.]+[w]+)+$/;
 Se comprueba que la expresión empieza por "http://" o por "https://", y después que tiene dos o más cadenas de
texto separadas por puntos.
Comprobar una URL:
 En realidad comprobamos que el el nombre empieza por una letra mayúscula, y que los caracteres que le
siguen son minúsculas y letras empleadas en español, y que no son números; en el patrón este esquema
podemos repetirlo con un espacio en medio, con lo cual se pueden poner también nombres compuestos. La
expresión es la siguiente:
/^([A-Z]{1}[a-zñáéíóú]+[s]*)+$/
 En realidad esta expresión tendría un pequeño fallo y es que no validaría nombres que empiecen por vocal si
ésta va acentuada, por ejemplo "Ángel" o Úrsula, no lo validaría, y sí si lo escribimos "Angel" y "Ursula". por
tanto haremos una pequeña corrección y la expresión regular quedará así:
/^([A-ZÁÉÍÓÚ]{1}[a-zñáéíóú]+[s]*)+$/
Expresiones Regulares JavaScript
Ejemplos de aplicación de Expresiones Regulares
Comprobar número de teléfono de España:
 Se comprueba que el número tenga 9 cifras, y las cuales pueden ponerse todas seguidas o separadas por
guiones en grupos: el primero de tres, y los demás de dos (admite los formatos "000000000", ó 000-00-00-00,
también el 000-000000, pero no el 000-000-000). La expresión regular es la siguiente:
/^[d]{3}[-]*([d]{2}[-]*){2}[d]{2}$/
 Podemos ajustar más la comprobación si comprobamos también que la primera cifra sea un 9 ó un 6, ya que
todos los teléfonos normales en España empiezan por esas cifras (fijos o móviles). La expresión regular ahora
quedará así:
/^[9|6]{1}([d]{2}[-]*){3}[d]{2}$/

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (12)

Javascript 1
Javascript 1Javascript 1
Javascript 1
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java script
 
Introduccion a java script
Introduccion a java scriptIntroduccion a java script
Introduccion a java script
 
Resumen Java Script
Resumen Java ScriptResumen Java Script
Resumen Java Script
 
Samuel bailon sanchez
Samuel bailon sanchezSamuel bailon sanchez
Samuel bailon sanchez
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
 
Introducción a Javascript I
Introducción a Javascript IIntroducción a Javascript I
Introducción a Javascript I
 
RESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTRESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPT
 
Javascript
JavascriptJavascript
Javascript
 
Java script
Java script Java script
Java script
 
Pseudocodigos
PseudocodigosPseudocodigos
Pseudocodigos
 

Ähnlich wie Clase 10 expresiones regulares

RegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesRegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesIsabel Gómez
 
Clase 05-expresiones-regulares
Clase 05-expresiones-regularesClase 05-expresiones-regulares
Clase 05-expresiones-regularesDanielMrquez25
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en javaRobert Wolf
 
25 Php. Operaciones Con Cadenas
25 Php. Operaciones Con Cadenas25 Php. Operaciones Con Cadenas
25 Php. Operaciones Con CadenasJosé M. Padilla
 
Perl6 expresiones regulares
Perl6 expresiones regularesPerl6 expresiones regulares
Perl6 expresiones regularesAlfonso Alba
 
Manual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formulariosManual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formulariosPedro Ruiz
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con ConstantesJosé M. Padilla
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gioRobert Wolf
 
Lo básico sobre strings
Lo básico sobre stringsLo básico sobre strings
Lo básico sobre stringsGoogle
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regularesRita Aguilar
 
Cadenas De Caracteres
Cadenas De CaracteresCadenas De Caracteres
Cadenas De CaracteresMauricio
 
6.1 arrays en java
6.1 arrays en java 6.1 arrays en java
6.1 arrays en java Johan Retos
 
Java script teoria
Java script teoriaJava script teoria
Java script teoriassxdan
 

Ähnlich wie Clase 10 expresiones regulares (20)

RegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesRegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones Regulares
 
Clase 05-expresiones-regulares
Clase 05-expresiones-regularesClase 05-expresiones-regulares
Clase 05-expresiones-regulares
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
 
25 Php. Operaciones Con Cadenas
25 Php. Operaciones Con Cadenas25 Php. Operaciones Con Cadenas
25 Php. Operaciones Con Cadenas
 
Perl6 expresiones regulares
Perl6 expresiones regularesPerl6 expresiones regulares
Perl6 expresiones regulares
 
Manual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formulariosManual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formularios
 
39 Php. Bucles While
39 Php. Bucles While39 Php. Bucles While
39 Php. Bucles While
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Lo básico sobre strings
Lo básico sobre stringsLo básico sobre strings
Lo básico sobre strings
 
Codigo
CodigoCodigo
Codigo
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
PHP
PHPPHP
PHP
 
Cadenas De Caracteres
Cadenas De CaracteresCadenas De Caracteres
Cadenas De Caracteres
 
Php
PhpPhp
Php
 
6.1 arrays en java
6.1 arrays en java 6.1 arrays en java
6.1 arrays en java
 
Programacion de Cadenas
Programacion de CadenasProgramacion de Cadenas
Programacion de Cadenas
 
Cadenas
CadenasCadenas
Cadenas
 
Java script teoria
Java script teoriaJava script teoria
Java script teoria
 

Mehr von José Ricardo Tillero Giménez

Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPJosé Ricardo Tillero Giménez
 

Mehr von José Ricardo Tillero Giménez (20)

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Clase 6 VLAN
 
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
 

Kürzlich hochgeladen

TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...JAVIER SOLIS NOYOLA
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuelabeltranponce75
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONamelia poma
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresJonathanCovena1
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdfDemetrio Ccesa Rayme
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 

Kürzlich hochgeladen (20)

TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 

Clase 10 expresiones regulares

  • 1. Electiva II Clase 10 Expresiones Regulares JavaScript Ing. José Ricardo Tillero UPTAEB
  • 2. Expresiones Regulares JavaScript Expresiones Regulares  Las expresiones regulares son patrones que se utilizan para hacer coincidir combinaciones de caracteres en cadenas.  Las expresiones regulares permiten comprobar si una cadena de texto se ajusta a un determinado tipo de estructura o patrón.  Las expresiones regulares no son exclusivas del lenguaje javascript, otros lenguajes de programación también las usan, de hecho javascript las ha importado de ellos, por lo que son muy similares tanto en Java, como en PHP y otros lenguajes.  Un expresión regular consiste en:  Un patrón (pattern) que se usa para localizar textos que se ajusten a él.  Modificadores (opcionales) que nos indican como aplicar el patrón.
  • 3. Expresiones Regulares JavaScript Crear una Expresión Regular  Construyes una expresión regular en una de estas dos formas:  Usando una expresión regular literal, que consiste en un patrón encerrado entre barras, como sigue: > let re = /ab+c/; o > var re = /ab+c/;  O llamando a la función constructora del objeto RegExp, de la siguiente manera: > let re = new RegExp('ab+c'); o > var re = new RegExp('ab+c');
  • 4. Expresiones Regulares JavaScript Escribir un patrón de Expresión Regular  Un patrón de expresión regular se compone de caracteres simples, como /abc/, o una combinación de caracteres simples y especiales, como /ab*c/ o /Capítulo (d).d*/.  Usar patrones simples:  Los patrones simples se construyen con caracteres para los que deseas encontrar una coincidencia directa. Por ejemplo, el patrón /abc/ coincide con combinaciones de caracteres en cadenas solo cuando ocurre la secuencia exacta "abc" (todos los caracteres juntos y en ese orden). Tal coincidencia tendría éxito en las cadenas "Hola, ¿conoces tu abc?" y "Los últimos diseños de aviones evolucionaron a partir de slabcraft". En ambos casos, la coincidencia es con la subcadena "abc". Ahora para la siguiente cadena "Grab crab", no hay ninguna coincidencia porque aunque contiene la subcadena "ab c", no contiene la subcadena "abc" exacta.  Usar caracteres especiales:  Cuando la búsqueda de una coincidencia requiere algo más que una coincidencia exacta, como por ejemplo buscar una o más 'b', o encontrar espacios en blanco, puedes incluir caracteres especiales en el patrón. Por ejemplo, para hacer coincidir una sola "a" seguida de cero o más "b" seguidas de "c", usarías el patrón /ab*c/: el * después de "b" significa "0 o más apariciones del elemento anterior". En la cadena "cbbabbbbcdebc", este patrón coincidirá con la subcadena "abbbbc".
  • 5. Expresiones Regulares JavaScript Comprobar un texto con Expresiones Regulares  El caso más simple es comprobar si una determinada cadena de texto está contenida en otra: > expresion = /martes/;  Esta expresión comprobará si la cadena "martes" está contenida en otra. Al aplicar un método de búsqueda devolverá verdadero si la cadena contiene martes, se dice entonces que la cadena se ajusta al patrón, y devolverá falso si no lo contiene.  Para ello utilizaremos el método test(), el cual se emplea de la siguiente manera: > resultado = expresionRegular.test("texto a comprobar");  La variable resultado devolverá el valor booleano true si la cadena contiene la expresión al menos una vez, y false si no la contiene.  Veamos el ejemplo para la expresión anterior. > texto1 = "Los martes voy al gimnasio."; > texto2 = "Los miércoles voy a clase de inglés."; > buscar = /martes/; > alert(buscar.test(texto1)); //devuelve true > alert(buscar.test(texto2)); //devuelve false
  • 6. Expresiones Regulares JavaScript Comprobar en grupos de caracteres con Expresiones Regulares  Si lo que se quiere buscar es un grupo de caracteres, estos irán encerrados entre corchetes: expresion = /[aeiou]/;  Esta expresión buscará cualquiera de las vocales en el texto y en ese caso se ajustará al patrón. Los corchetes definen caracteres que debe contener la cadena. Probemos con un ejemplo similar al anterior: > texto1 = "a = 4.65"; > texto2 = "b = 17.3"; > buscar = /[aeiou]/; > alert(buscar.test(texto1)); //devuelve true > alert(buscar.test(texto2)); //devuelve false  En éste ejemplo el primer texto se ajusta al patrón, al tener una vocal, y el segundo no, al no contener vocales.  Sin embargo los elementos dentro del corchete pueden formar grupos homogéneos, tales como cifras consecutivas o letras consecutivas del alfabeto, en ese caso ponemos la primera y la última y un guion en medio, es decir: /[a-f]/, es lo mismo que poner /[abcdef]/ /[1-5]/, es lo mismo que poner /[12345]/
  • 7. Expresiones Regulares JavaScript Comprobar en grupos de caracteres con Expresiones Regulares  Si queremos incluir el guion dentro de la expresión anterior lo podemos poner al final: /[a-f-]/, o también al principio, pero con una barra inclinada al revés para indicar que es un carácter de escape: /[-a-f]/.  Los caracteres de escape tienen aquí la misma función que en los textos, poder escribir ciertos símbolos que sirven para el código.  El siguiente ejemplo comprueba si el texto tiene alguno de los números del 1 al 5: > texto1 = "Pedro tiene 62 años"; > texto2 = "Pablo tiene 67 años"; > buscar = /[1-5]/; > alert(buscar.test(texto1)); //devuelve true > alert(buscar.test(texto2)); //devuelve false
  • 8. Expresiones Regulares JavaScript Comprobar en grupos de caracteres con Expresiones Regulares  Clases de caracteres: Para los casos más habituales hay unos caracteres especiales que indican si la cadena tiene un determinado tipo de caracteres:  /w/: Contiene caracteres alfanuméricos.  /W/: Devuelve false si sólo contiene caracteres alfanuméricos.  /d/: Contiene dígitos o cifras.  /D/: Devuelve false si sólo contiene dígitos.  /s/: Contiene alguno de los caracteres que definen espacios en blanco (espacio, tabulador, retorno de carro ... ).  /S/: Devuelve false si sólo contiene caracteres que definen espacios en blanco.  Ejemplos con estos caracteres especiales.: Ejemplo 1 Ejemplo 2 > texto1 = "María cumple 12 años"; > texto2 = "María cumple doce años"; > buscar = /d/; > alert(buscar.test(texto1)); //devuelve true > alert(buscar.test(texto2)); //devuelve false texto1 = "Hoy es lunes"; texto2 = " "; buscar = /w/; alert(buscar.test(texto1)); //devuelve true alert(buscar.test(texto2)); //devuelve false
  • 9. Expresiones Regulares JavaScript Comprobar en grupos de caracteres con Expresiones Regulares  Otros caracteres especiales: El signo /./ indica cualquier carácter, con lo que se suele usar para comprobar que la cadena no está vacía, tal como muestra este ejemplo:: > texto1 = "Hoy es lunes"; > texto2 = ""; > buscar = /./; > alert(buscar.test(texto1)); //devuelve true > alert(buscar.test(texto2)); //devuelve false  Como se ve el punto es un carácter especial, por lo que si queremos buscar un punto en la cadena deberemos ponerlo con una barra inclinada inversa delante: /./, así buscaremos si la cadena contiene algún punto.  Los signos ^ al principio de la expresión regular y $ al final indican que la cadena de texto debe coincidir completamente con la expresión regular, es decir , comprueba que la cadena se ajusta completamente al patrón en lugar de comprobar si lo contiene. Así por ejemplo, si queremos comprobar si una cadena es un número escribiremos: /^d$/, como en el siguiente ejemplo: > texto1 = "casa"; > texto2 = "Mi casa es grande"; > buscar = /^casa$/; > alert(buscar.test(texto1)); //devuelve true > alert(buscar.test(texto2)); //devuelve false
  • 10. Expresiones Regulares JavaScript Crear el objeto RegExp  Las expresiones regulares tienen una sintaxis propia, esto es lo que suele hacerlas algo complicadas, ya que no es igual que el resto de elementos de javascript. Para empezar cualquier expresión regular debe estar encerrada entre los caracteres / ... /: expresion = / ...codigo_expresion .../modificadores o banderas > var myRe = /d(b+)d/g;  Al guardar la expresión regular en una variable, ésta se convierte en un objeto del tipo RegExp. También podemos crear la expresión regular mediante el método general para crear objetos: expresion = new RegExp('..codigo_expresion... ', 'modificadores o banderas') > var myRe = new RegExp('d(b+)d', 'g');  En este caso no debemos poner el código entre barras inclinadas.
  • 11. Expresiones Regulares JavaScript Cuantificadores de patrones de objetos RegExp  Los cuantificadores son signos que se ponen detrás de un determinado patrón de búsqueda, y que indican las veces que debe aparecer en el texto para ajustarse al patrón.  /a+/: La cadena debe contener el patrón (letra "a") una o más veces.  /a*/: El patrón (letra a) debe aparecer cero o más veces.  /a?/: El patrón debe aparecer cero o una vez.  /a{3}/: El patrón debe aparecer exactamente tres veces (en lugar del 3 puede ser cualquier otro número).  /a{3,8}/: El patrón debe aparecer entre 3 y 8 veces (ambos inclusive).
  • 12. Expresiones Regulares JavaScript Modificadores o banderas de objetos RegExp  Los modificadores o "flags" son unas letras con un significado especial que se ponen detrás de la expresión regular, y matizan la forma de buscar. Estos son los siguientes:  g: /a/g - Explora la cadena hasta el final.  i: /a/i - No distingue entre mayúsculas y minúsculas.  m: /a/m - Permite usar varios ^ y $ en la cadena.  s: /a/s - Incluye el salto de línea en el comodín punto .  x: /a/x - Ignora los espacios en el patrón .  Si escribimos más de un modificador en una expresión regular, debemos ponerlos en el mismo orden que aparecen arriba, es decir, en orden alfabético.
  • 13. Expresiones Regulares JavaScript Propiedades de los objetos RegExp  Las siguientes propiedades se usan con el objeto RegExp y no con cualquier expresión regular concreta, por tanto se escribirán de la forma: RegExp.propiedad; son de sólo lectura, por lo que no las podemos modificar directamente, sin embargo se actualizan automáticamente cada vez que se emplea un método con un objeto regular, ya sea con los métodos de RegExp o con los métodos de String, correspondiendo la cadena explorada a la obtenida tras el último método empleado. las propiedades son:  $1 ... $9: índices que contienen las partes agrupadas con paréntesis en el patrón de búsqueda.  RegExp.input: Cadena que se ha explorado.  RegExp.lastMatch: Última coincidencia encontrada.  RegExp.multiline: Variable booleana que indica si la cadena explorada incluye saltos de línea.  RegExp.lastParent: Última coincidencia encontrada con un patrón entre paréntesis.  RegExp.leftContext: Desde el principio de la cadena hasta la coincidencia hallada.  RegExp.rightContext: Desde la coincidencia hasta el final de la cadena.  RegExp.global: Con false (por defecto) devuelve solo el primer elemento encontrado. Con true devuelve todos los elementos encontrados.  RegExp.ignoreCase: Si está a true haremos el matching sensible a mayúsculas (por defecto a false).  RegExp.lastIndex: La posición por la que empezar la búsqueda (por defecto a 0).  RegExp.source: Contiene la expresión regular.  Estas propiedades (excepto lastIndex) no pueden ser modificadas después de creado el objeto.
  • 14. Expresiones Regulares JavaScript Propiedades de los objetos RegExp  Ejemplos: > var re = new RegExp('j.*t', 'gmi'); > re.global < true > re.global = false; < false > re.global < true > var re = /j.*t/ig; > re.global < true > re.source < "j.*t"
  • 15. Expresiones Regulares JavaScript Métodos de los Objetos RegExp  El objeto RegExp tiene varios métodos, pero también se pueden usar algunos métodos del objeto String para trabajar con expresiones regulares.  test(): Este método busca el patrón en el texto y devuelve el valor booleano true si el texto se ajusta, si no es así devolverá false. Su sintaxis es: buscar = patron.test("cadena"); Donde buscar es la variable donde se devuelve el valor (true o false); patron es la variable que contiene la expresión regular, y "cadena" es la cadena de texto en la que se busca; si la cadena se pasa de forma literal llevará las comillas, si la pasamos en una variable, no llevará comillas.  exec(): Este método busca la expresión en el texto, y devuelve el primer texto que concuerda con la expresión buscada. Si no encuentra ninguna coincidencia, entonces devuelve null. Su sintaxis es la siguiente: buscar = patron.exec(texto); Donde patron es la variable que contiene la expresión regular, y texto es la variable que contiene la cadena de texto. El resultado de este método es el trozo de cadena que se ajusta al patrón, y se guarda en la variable buscar.
  • 16. Expresiones Regulares JavaScript Métodos de los Objetos RegExp  exec(): Este método tiene además dos propiedades, la propiedad index, la cual nos indica la posición en la que se encuentra la cadena buscada, y la propiedad input, la cual devuelve la cadena completa en la que estamos realizando la búsqueda. La posición que indica la propiedad index es la del primer carácter encontrado en el trozo de cadena que coincide. este se empieza a contar a partir del 0. posicion = patron.exec(texto).index; textoCompleto = patron.exec(texto).input;  compile(): El método compile convierte el patrón en un formato interno para que la ejecución sea más rápida. Por ejemplo, esto permite un uso más eficiente de expresiones regulares en bucles. Su sintaxis es la siguiente: compilado = patron.compile(patron); La variable compilado guardará la expresión regular ya compilada.
  • 17. Expresiones Regulares JavaScript Métodos de los Objetos RegExp  Ejemplos: > /j.*t/.test("Javascript") < false > /j.*t/i.test("Javascript") < true > /s(amp)le/i.exec("Sample text") < ["Sample", "amp"] > /a(b+)a/g.exec("_abbba_aba_") < ["abbba", "bbb"]
  • 18. Expresiones Regulares JavaScript Métodos de los Objetos RegExp  Ejemplos: <!DOCTYPE html> <html> <head> <title>implementación de el método exec()</title> <style type="text/css"> #caja { width: 400px; border: 1px black solid; float: right; } </style> <script type="text/javascript"> function elMetodo(){ patron = /hidalgo/gi; //expresión regular. texto = document.getElementById("mitexto").innerHTML; respuesta = patron.exec(texto); //buscar mediante exec() elemento = document.getElementById("caja"); elemento.innerHTML = "palabra buscada: "+ respuesta +"<br/> "; posicion = respuesta.index; //propiedad index: posición. elemento.innerHTML += "posición: "+ posicion +"<br/> "; textoCompleto = respuesta.input; //propiedad input: texto completo. elemento.innerHTML += "Texto en que se encuentra: "+ textoCompleto; } </script> </head> <body> <h1>Metodo exec para expresiones regulares.</h1> <div id="caja"></div> <h4>Texto de ejemplo:</h4> <p id="mitexto">En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor. Una olla de algo más vaca que carnero, salpicón las más noches, duelos y quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos, consumían las tres partes de su hacienda.</p> <h4>Buscar la palabra "hidalgo"</h4> <form action="#" name="elmetodo"> <p><input type="button" value="Metodo exec" onclick="elMetodo()" /></p> </form> </body> </html>
  • 19. Expresiones Regulares JavaScript Métodos de String que aceptan Expresiones Regulares  Los siguientes métodos de la clase String pueden usarse para trabajar con las expresiones regulares. En ellos la expresión regular o patrón la escribiremos siempre como parámetro o argumento del método, es decir, dentro del paréntesis.:  search(): Busca la expresión regular en la cadena de texto, si la encuentra devuelve un número indicando su posición (el del primer carácter), empezando a contar desde 0, si no la encuentra devuelve -1. Su sintaxis es la siguiente: buscar = texto.search(patron); Donde texto es la variable que contiene el texto donde se busca, y patron es la expresión regular. La variable buscar contendrá el número en el que se encuentra la primera coincidencia (empezando a contar por el 0), si no hay coincidencia en la cadena, éste será -1.  split(): Este método transforma la cadena en un array, la expresión regular indica cual es el delimitador que separa los elementos del array. por ejemplo, con la siguiente expresion regular /s/ cada vez que se encuentra un espacio se crea un nuevo elemento del array, con lo que el array contendria las palabras de la cadena. Su sintaxis es parecida a la del método anterior: miarray = texto.split(patron);
  • 20. Expresiones Regulares JavaScript Métodos de String que aceptan Expresiones Regulares  match(): Devuelve un arreglo que contiene todas las coincidencias, incluidos los grupos de captura, o null si no se encuentra ninguna coincidencia. Su sintaxis es la siguiente: hallado = texto.match(patron); Donde la variable texto es el texto en el que se hará el emparejamiento, patron contiene la expresión regular, y hallado es la variable que contiene el array con todas las ocurrencias.  replace(): Este método devuelve la cadena original, en la que se ha remplazado las coincidencias encontradas por la expresión regular, por otro texto pasado también como argumento. Por lo tanto a este método le pasaremos dos argumentos. que serán la expresión regular, y la cadena a remplazar. Su sintaxis es la siguiente: nuevoTexto = texto.replace(patron,remplazo); Donde la variable texto es el texto en el que se explora, patron contiene la expresión regular, y remplazo es la variable que contiene el nuevo texto que se va a poner en lugar del encontrado por la expresión .
  • 21. Expresiones Regulares JavaScript Métodos de String que aceptan Expresiones Regulares  Ejemplos: > var s = "HelloJavaScriptWorld“; < undefined > s.match(/a/); < ["a"] > s.match(/a/g); < ["a", "a"] > s.match(/j.*a/i); < ["Java"] > s.search(/j.*a/i); < 5 > s.replace(/[A-Z]/g, ''); < "elloavacriptorld" < s.replace(/[A-Z]/, ''); > s.replace(/[A-Z]/g, "_$&"); < "_Hello_Java_Script_World" > s.replace(/([A-Z])/g, "_$1"); < "_Hello_Java_Script_World" > function replaceCallback(match){return "_" + match.toLowerCase();} < undefined > s.replace(/[A-Z]/g, replaceCallback); < "_hello_java_script_world"
  • 22. Expresiones Regulares JavaScript Métodos de String que aceptan Expresiones Regulares  Ejemplos: > "juanmanuel.garrido@softonic.com".replace(/(.*)@.*/, "$1"); < "juanmanuel.garrido" > var sMail = "juanmanuel.garrido@softonic.com"; < undefined > var rRegExp = /(.*)@(.*).(.*)/; < undefined > var fCallback = function () { args = arguments; return args[1] + " de " args[2].toUpperCase(); } < undefined > sMail.replace(rRegExp, fCallback); < "juanmanuel.garrido de SOFTONIC" > args < ["juanmanuel.garrido@softonic.com", "juanmanuel.garrido", "softonic", "com", 0, "juanmanuel.garrido@softonic.com"] > var csv = 'one, two,three ,four'; > csv.split(','); < ["one", " two", "three ", "four"] > csv.split(/s*,s*/) < ["one", "two", "three", "four"] > "test".replace('t', 'r') < "rest" > "test".replace(new RegExp('t'), 'r') < "rest" > "test".replace(/t/, 'r') < "rest"
  • 23. Expresiones Regulares JavaScript Métodos de String que aceptan Expresiones Regulares  Ejemplo usando match: En el siguiente ejemplo, se usa match para hallar "Capítulo" seguido de 1 o más caracteres numéricos seguidos de un punto decimal y caracteres numéricos cero o más veces. La expresión regular incluye el flag i por lo que las mayúsculas serán ignoradas. > cadena = "Para más información, vea Capítulo 3.4.5.1"; > expresion = /(capítulo d+(.d)*)/i; > hallado = cadena.match(expresion); > console.log(hallado); Esto devuelve un array que contiene Capítulo 3.4.5.1, Capítulo 3.4.5.1,.1 "Capítulo 3.4.5.1" es el primer emparejamiento y el primer valor referenciado por (Capítulo d+(.d)*). ".1" es el segundo valor referenciado por (.d).
  • 24. Expresiones Regulares JavaScript Métodos de String que aceptan Expresiones Regulares  Ejemplo usando las banderas global e ignoreCase para ignorar las mayúsculas con match: El siguiente ejemplo demuestra el uso de los flags global e ignorar mayúsculas con match. Todas las letras de A hasta E y de a hasta e son devueltas, en su propio elemento dentro del array.. > var cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; > var expresion = /[A-E]/gi; > var array_emparejamientos = cadena.match(expresion); > console.log(array_emparejamientos); array_emparejamientos será ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
  • 25. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  [abc] Busca coincidencias en los caracteres del patrón > "some text".match(/[otx]/g) < ["o", "t", "x", "t"]  [a-z] Busca coincidencias en el rango de caracteres.  [a-d] es lo mismo que [abcd].  [a-z] busca todas los caracteres en minúscula.  [a-zA-Z0-9_] busca todo los caracteres, números y el guion bajo. > "Some Text".match(/[a-z]/g) < ["o", "m", "e", "e", "x", "t"] > "Some Text".match(/[a-zA-Z]/g) < ["S", "o", "m", "e", "T", "e", "x", "t"]  [ˆabc] Devuelve lo que NO coincida con el patrón. > "Some Text".match(/[^a-z]/g) < ["S", " ", "T"]
  • 26. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  a|b Devuelve a o b (la barra indica OR). > "Some Text".match(/t|T/g); < ["T", "t"] > "Some Text".match(/t|T|Some/g); < ["Some", "T", "t"] [a-z]  a(?=b) Devuelve a solamente si está seguida de b. > "Some Text".match(/Some(?=Tex)/g); < null > "Some Text".match(/Some(?= Tex)/g); < ["Some"]  a(?!b) Devuelve a solamente si NO está seguida de b. > "Some Text".match(/Some(?! Tex)/g); < null > "Some Text".match(/Some(?!Tex)/g); < ["Some"]
  • 27. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  Carácter de escape utilizado para localizar caracteres especiales utilizados en el patrón como literales. > "R2-D2".match(/[2-3]/g) < ["2", "2"] > "R2-D2".match(/[2-3]/g) < ["2", "-", "2"]  n Nueva línea.  r Retorno de carro (Para comenzar una nueva línea se usa rn en Windows, n en Unix y r en Mac).  f Salto de página.  t Tabulación.  v Tabulación vertical.
  • 28. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  s Espacio en blanco o cualquiera de las 5 secuencias de escape de arriba. > "R2n D2".match(/s/g) < ["n", " "]  S Lo contrario de lo de arriba. Devuelve todo excepto espacios en blanco y las 5 secuencias de escape de antes. Lo mismo que [ˆs]. > "R2n D2".match(/S/g) < ["R", "2", "D", "2"]  w Cualquier letra, numero o guion bajo. Lo mismo que [A-Za-z0-9_]. > "Some text!".match(/w/g) < ["S", "o", "m", "e", "t", "e", "x", "t"]  W Lo contrario que w. > "Some text!".match(/W/g) < [" ", "!"]
  • 29. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  d Localiza un numero. Lo mismo que [0-9]. "R2-D2 and C-3PO".match(/d/g) < ["2", "2", "3"]  D Lo contrario de d. Localiza caracteres no numéricos. Lo mismo que [ˆ0-9] o [ˆd]. > "R2-D2 and C-3PO".match(/D/g) < ["R", "-", "D", " ", "a", "n", "d", " ", "C", "-", "P", "O"]  b Coincide con un limite de palabra (espacio, puntuación, guion…). > "R2D2 and C-3PO".match(/[RD]2/g) < ["R2", "D2"] > "R2D2 and C-3PO".match(/[RD]2b/g) < ["D2"] > "R2-D2 and C-3PO".match(/[RD]2b/g) < ["R2", "D2"]  B Lo contrario que b. > "R2-D2 and C-3PO".match(/[RD]2B/g) < null > "R2D2 and C-3PO".match(/[RD]2B/g) < ["R2"]
  • 30. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  ^ Representa el principio de la cadena donde se está buscando. Si tenemos el modificador m representa el principio de cada línea. > "regularnregularnexpression".match(/r/g); < ["r", "r", "r", "r", "r"] > "regularnregularnexpression".match(/^r/g); < ["r"] > "regularnregularnexpression".match(/^r/mg); < ["r", "r"]  $ Representa el final de la cadena donde se está buscando. Si tenemos el modificador m representa el final de cada línea. > "regularnregularnexpression".match(/r$/g); < null > "regularnregularnexpression".match(/r$/mg); <4 ["r", "r"]  . Representa a cualquier carácter excepto la nueva línea y el retorno de carro. > "regular".match(/r./g); < ["re"] > "regular".match(/r.../g); < ["regu"]
  • 31. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  * Hace matching si el patrón precedente ocurre 0 o más veces. /.*/ devolverá todo incluido nada (cadena vacía). > "".match(/.*/) < [""] > "anything".match(/.*/) < ["anything"] > "anything".match(/n.*h/) < ["nyth"]  ? Hace matching si el patrón precedente ocurre 0 o 1 vez. > "anything".match(/ny?/g) < ["ny", "n"]  + Representa a cualquier carácter excepto la nueva línea y el retorno de carro. > "anything".match(/ny+/g) < ["ny"] > "R2-D2 and C-3PO".match(/[a-z]/gi) < ["R", "D", "a", "n", "d", "C", "P", "O"] > "R2-D2 and C-3PO".match(/[a-z]+/gi) < ["R", "D", "and", "C", "PO"]
  • 32. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  {n} Hace matching si el patrón precedente ocurre exactamente n veces. > "regular expression".match(/s/g) < ["s", "s"] > "regular expression".match(/s{2}/g) < ["ss"] > "regular expression".match(/bw{3}/g) < ["reg", "exp"]  {min,max} Hace matching si el patrón precedente ocurre entre min y max veces. Se puede omitir max (solo tendrá mínimo) No se puede omitir min. > "doooooooooodle".match(/o/g) < ["o", "o", "o", "o", "o", "o", "o", "o", "o", "o"] > "doooooooooodle".match(/o{2}/g) < ["oo", "oo", "oo", "oo", "oo"] > "doooooooooodle".match(/o{2,}/g) < ["oooooooooo"] > "doooooooooodle".match(/o{2,6}/g) < ["oooooo", "oooo"]
  • 33. Expresiones Regulares JavaScript Sintaxis de los caracteres de busquedas en Expresiones Regulares  (pattern) Cuando el patrón está en paréntesis, se captura y se guarda para poder utilizarlo en sustituciones (captura de patrones). Estas capturas están disponibles en $1, $2,… $9. > "regular expression".replace(/(r)/g, '$1$1') < "rregularr exprression" > "regular expression".replace(/(r)(e)/g, '$2$1') < "ergular experssion"  {?:patternx} Patrón no capturable (no disponible en $1, $2, …). > "regular expression".replace(/(?:r)(e)/g, '$1$1') < "eegular expeession"
  • 34. Expresiones Regulares JavaScript Ejemplos de aplicación de Expresiones Regulares Comprobar un e-mail:  Veamos cómo construir una expresión regular en la que comprobamos que el usuario ha escrito un e-mail en un formulario cuando se le pide. Lo que realmente comprobamos es que el texto que ha escrito el usuario tiene una cierta estructura que coincide con la de un e-mail, es decir que tiene que tener una estructura como ésta: micorreo@servidor.com  Donde los símbolos arroba "@" y el punto "." son obligatorios. tanto el texto "micorreo" como "servidor" pueden ser variables; el texto de después del punto ("com") puede ser variable con ciertas restricciones: siempre tiene que ir en minúscula, y además tener siempre dos o tres caracteres.  Eso en una expresión regular se traduce en lo siguiente: /[w]+@{1}[w]+.[a-z]{2,3}/  En primer lugar comprobamos que hay una cadena de texto; [w]+ detrás de ella debe estar el signo arroba una vez @{1}, después se escribe otra cadena de texto; [w]+, después tiene que haber escrito un punto . y por último el país u organización, el cual está siempre escrito en letras minúsculas y con dos o tres letras: [a-z]{2,3}.  Como lo que se trata es de comprobar que el texto escrito coincida completamente con el e-mail, y no que éste esté dentro de una cadena, deberemos poner los signos ^ $ al principio y final de la expresión regular, por lo que ésta quedará de la siguiente forma: /^[w]+@{1}[w]+.[a-z]{2,3}$/
  • 35. Expresiones Regulares JavaScript Ejemplos de aplicación de Expresiones Regulares Comprobar un e-mail:  A continuación como utilizar la ER:  En HTML tenemos el siguiente formulario: <form action="#" name="formu1"> <p align="center"><input type="text" name="email" size="30" />Escribe un e-mail</p><br/> <p align="center"><input type="button" onclick="comprueba()" value="Comprobar" /></p> </form>  Y el código JavaScript para la comprobación es la siguiente función: function comprueba(){ tuEmail = document.formu1.email.value tuEmail = tuEmail.toString() patron = /^[w]+@{1}[w]+.+[a-z]{2,3}$/ respuesta = patron.test(tuEmail) alert("resultado: "+respuesta) }
  • 36. Expresiones Regulares JavaScript Ejemplos de aplicación de Expresiones Regulares Comprobar una URL:  Expresión regular para comprobar páginas web. El nombre de la página tiene que estar completo, es decir con el "http://" del principio. patron = /^http[s]?://[w]+([.]+[w]+)+$/;  Se comprueba que la expresión empieza por "http://" o por "https://", y después que tiene dos o más cadenas de texto separadas por puntos. Comprobar una URL:  En realidad comprobamos que el el nombre empieza por una letra mayúscula, y que los caracteres que le siguen son minúsculas y letras empleadas en español, y que no son números; en el patrón este esquema podemos repetirlo con un espacio en medio, con lo cual se pueden poner también nombres compuestos. La expresión es la siguiente: /^([A-Z]{1}[a-zñáéíóú]+[s]*)+$/  En realidad esta expresión tendría un pequeño fallo y es que no validaría nombres que empiecen por vocal si ésta va acentuada, por ejemplo "Ángel" o Úrsula, no lo validaría, y sí si lo escribimos "Angel" y "Ursula". por tanto haremos una pequeña corrección y la expresión regular quedará así: /^([A-ZÁÉÍÓÚ]{1}[a-zñáéíóú]+[s]*)+$/
  • 37. Expresiones Regulares JavaScript Ejemplos de aplicación de Expresiones Regulares Comprobar número de teléfono de España:  Se comprueba que el número tenga 9 cifras, y las cuales pueden ponerse todas seguidas o separadas por guiones en grupos: el primero de tres, y los demás de dos (admite los formatos "000000000", ó 000-00-00-00, también el 000-000000, pero no el 000-000-000). La expresión regular es la siguiente: /^[d]{3}[-]*([d]{2}[-]*){2}[d]{2}$/  Podemos ajustar más la comprobación si comprobamos también que la primera cifra sea un 9 ó un 6, ya que todos los teléfonos normales en España empiezan por esas cifras (fijos o móviles). La expresión regular ahora quedará así: /^[9|6]{1}([d]{2}[-]*){3}[d]{2}$/