SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
UNIDAD II:
Expresiones regulares
Desarrollo de AplicacionesWeb con
Software Interpretados en el Cliente
Objetivos
•Conseguir un dominio amplio de las expresiones regulares
de JavaScript.
•Estar en capacidad de utilizar expresiones regulares de
forma declarativa y utilizando el objeto RegExp().
•Dominar las técnica para crear una expresión regular
•Aplicar los principales métodos para creación de
expresiones regulares
Contenido
1. Definición de expresiones regulares.
2.Por qué son tan importantes las Expresiones Regulares.
3. Crear expresiones regulares en JavaScript.
4.Usar códigos de escape para caracteres que generan
ambigüedad.
5. Modificadores de las expresiones regulares.
6.Indicadores de posición.
7. Cuantificadores de repetición.
Contenido
8.Clases de caracteres.
9.Agrupamiento.
10.Subexpresiones.
11.Alternativas.
12.Coincidencia agresiva.
13.Herramientas para probar expresiones regulares.
14.Características de Expresiones Regulares de Perl no
admitidas en JavaScript.
Definición de expresiones regulares
•Una expresión regular es básicamente un patrón de
caracteres que se define con el objeto de realizar
comparaciones en busca de coincidencias con cadenas de
prueba.
•Las RegExp permiten el reconocimiento y extracción de casi
cualquier tipo de cadena con formato predecible como
pueden ser: direcciones URL, direcciones IP, direcciones de
correo electrónico, números de identificación, números de
teléfono, números de tarjetas de crédito, códigos postales,
números de matrícula (placa), etc.
•Entre las utilidades más usuales de las RegExp están la
comprobación de datos introducidos en formularios, la
búsqueda y sustitución de texto, etc.
Definición de expresiones regulares
•Las expresiones regulares se componen de caracteres, ya sea
solos o en combinación con caracteres especiales que se
utilizan para crear expresiones regulares más complejas
Definición de expresiones regulares
• En JavaScript, una expresión regular es un objeto que describe un
patrón de caracteres que se crea mediante un objeto RegExp que
representa a las expresiones regulares.
• Tanto RegExp como String, definen métodos que utilizan expresiones
regulares para realizar búsquedas de coincidencia de patrones
eficaces, así como funciones de reemplazo en el texto analizado.
• Las expresiones regulares en JavaScript, se estandarizaron en
ECMAScript v3. JavaScript 1.2 implementa un subconjunto de
opciones de expresión regular requeridas por ECMAScript v3 y
JavaScript 1.5 implementa todo el estándar.
• JavaScript implementa las expresiones regulares basadas
principalmente en las funciones de expresión regular del lenguaje
Perl.
Por qué son tan importantes las Expresiones
Regulares
•Aunque dicho en palabras no es tan evidente explicar la
importancia de las expresiones regulares, intentaremos
explicarlo diciendo que tareas que usando cualquier otra
metodología de programación pudieran tomarnos varias
líneas de código, con una expresión regular bien planteada,
podríamos realizar con una única instrucción.
•Es así que las expresiones regulares son especialmente útiles
para hacer trivial el proceso de descomponer cadenas y
buscar o extraer información de estas.
Por qué son tan importantes las Expresiones
Regulares
•A pesar de la afirmación anterior, la única manera evidente de
comprobar lo increíble e importante que son las expresiones
regulares es con un ejemplo práctico:
•Imagine la siguiente situación: se quiere validar una cadena
para verificar que sea un código postal válido en los Estados
Unidos, que sigue el siguiente formato 99999-9999, en donde
cada 9 representa un dígito decimal.
•Sin la existencia de las expresiones regulares, una posible
solución elegante del problema de verificar si un dato
ingresado coincide o no con un código postal de los Estados
Unidos, sería la siguiente.
Por qué son tan importantes las Expresiones
Regulares
function isZipCode(zipcode){
if(typeof zipcode!=="string" || zipcode.length!=10) return false;
for(var i=0; i<zipcode.length; i++){
var car = zipcode[i];
switch(i){
case 0: case 1: case 2: case 3: case 4:
case 6: case 7: case 8: case 9:
if(car<'0' || car>'9') return false;
break;
case 5:
if(car!='-') return false;
break;
}
}
return true;
}
Por qué son tan importantes las Expresiones
Regulares
•El código anterior saca partido del hecho que sólo se
requieren dos tipos de comprobaciones distintas, una para
los dígitos del 0 al 9 y la otra un simple guión de separación
en donde la única posición distinta de donde se espera el
guión y no un entero es en el sexto carácter, que debe estar
ubicado en el índice 5 de la matriz o arreglo.
•Observe la solución, usando expresiones regulares y cómo
simplifica la cantidad de código requerido, pero mejor aún la
eficiencia de la solución que evita la utilización del ciclo
repetitivo.
Por qué son tan importantes las Expresiones
Regulares
function isZipCode(zipcode){
return /^d{5}-d{4}$/.test(zipcode);
}
•Aunque le parezca mentira la función iterativa anterior de 15
líneas es reducida a 3 líneas usando expresiones regulares.
•De esto se trata el increíble poder de las expresiones
regulares, de hacer una tarea aparentemente compleja en
una o pocas líneas.
•Aprenderemos mucho de expresiones regulares en esta
clase, así que a poner atención sobre todos los conceptos y
operadores que poseen.
Creación de expresiones regulares
En JavaScript existen dos formas de crear o declarar una expresión
regular, que son:
1. Usando literales de expresiones, que es la forma más usual y
extendida:
var re = /ab + c/;
2. Utilizando el constructor del objeto RegExp:
var re = new RegExp("ab + c");
Es de notar la diferencia que hay en cada una de las formas en
que se delimitan los patrones que definen la expresión regular.
Uso de códigos de escape
•Al igual que ocurre con las cadenas de caracteres, en las
expresiones regulares también hay ciertos caracteres que
generan ambigüedad en la expresión y por tanto deben
escaparse si se desean incluir dentro de un patrón.
•Entre algunos de los caracteres problemáticos más comunes
están las barras de división que son justamente iguales a los
delimitadores de expresiones regulares en la sintaxis
declarativa.
•Puede examinar un conjunto bastante completo de códigos
de escape en la guía de práctica #6.
Modificadores de las expresiones regulares
En las expresiones regulares existen modificadores que alteran
la interpretación del patrón para una expresión regular. Los
principales modificadores son tres:
Carácter Significado
i No se hace distinción entre mayúsculas y minúsculas.
g Correspondencia global; es decir, se buscan todas las
correspondencias dentro de la cadena, no solo la primera.
m Se busca correspondencia en líneas múltiples.
Ejemplos usando modificadores
Usando objeto inicializador:
var patron1 = /http:///i;
var patron2 = /universidad/i;
Usando el constructor RegExp():
var patron1 = new RegExp("http://", "i");
var patron2 = new RegExp("universidad", "i");
Ejemplo de expresión regular declarativa
Observe la siguiente expresión regular:
• En el literal de expresión regular anterior, los símbolos "/" y "/"
delimitan la expresión regular.
• La letra g, al final del literal indica que se realizará una
comparación global con cualquier cadena de prueba, de modo
que si existe más de una coincidencia se seguirá comparando
hasta encontrarlas todas. Por defecto, si no se incluye la letra "g"
sólo se encuentra la primera coincidencia.
• w y d son clases de caracteres que indican cualquier carácter de
palabra o cualquier carácter dígito, respectivamente.
• {#} es un cuantificador de repetición.
Ejemplo de expresión regular con el
constructor RegExp
Observe la siguiente expresión regular:
• El constructor anterior acepta dos argumentos. El primero es la
expresión regular en sí y el segundo es el modificador, que en este
caso indica que se realice una búsqueda global sobre la cadena de
prueba.
• Observe que en este caso, con el constructor d es necesario
escapar el carácter de barra invertida con otra barra invertida,
quedando d.
• La expresión regular anterior valida números de tarjetas de
crédito del formato: 9999-9999-9999-9999 comunes en tarjetas
VISA y Master Card.
Indicadores de posición
Dentro de las expresiones regulares existen una serie de caracteres
especiales que se utilizan para definir patrones de forma más precisa. El
primer grupo de esos tipos de caracteres especiales son los indicadores
de posición, que se utilizan para indicar la posición en la que tiene que
estar el patrón en la cadena para que se de una coincidencia.
Carácter Significado
^ El patrón debe aparecer al comienzo de la cadena o de la línea.
$ El patrón debe aparecer al final de la cadena o de la línea.
b Coincide con un límite de palabra; es decir, con la posición entre un carácter w y un carácter W o
entre el carácter w y el inicio o el final de una cadena.
B Coincide con una posición que no es límite de palabra.
(?=p) Afirmación previa positiva que requiere que los siguientes caracteres coincidan con el patrón p, pero
sin incluir realmente dichos caracteres en la coincidencia.
(?!p) Afirmación previa negativa que requiere que los siguientes caracteres no coincidan con el patrón p.
Utilización de indicadores de posición
•Los indicadores de posición establecerán qué elemento debe
aparecer al inicio y/o al final del patrón para aceptar una
coincidencia.
•Cuando no se especifican indicadores de posición la
coincidencia se produce, si se encuentra el patrón en la
cadena, en cualquier posición, no necesariamente al inicio o al
final.
Ejemplos de indicadores de posición
•Con sintaxis declarativa (objeto inicializador):
var re = /^<input type=/;
var htmltag = "<input type='text' name='txtname'>";
var coinciden = re.test(htmltag);
•Con el constructor RegExp:
var re = new RegExp("^<input type=");
var htmltag = "<input type='text' name='txtname'>";
var coinciden = re.test(htmltag);
Cuantificadores de repetición
• Entre los cuantificadores de repetición más utilizados está el asterisco
(*), que se utiliza para indicar que el elemento anterior se puede
repetir cero, o más, veces.
• Ejemplo:
var patron = /zy*x/;
• Habrá coincidencia con literales de cadena como:
"zx"
"zyx"
"zyyyyyyyyyyyyyyyx"
"Las letras zyx son las últimas letras del abecedario"
• No habrá coincidencia con:
"abexzedaryo"
"yx"
"zy"
Cuantificadores de repetición
• Otro cuantificador de repetición es el signo más (+), que se utiliza para
indicar que el elemento anterior se debe repetir una o más veces.
• Ejemplo:
var patron = /ab+c/;
• Existirá coincidencia con:
"abc"
"abbbbbbbbbbbbbbc"
"Las letras abc son las primeras letras del abecedario"
• No existirá coincidencia con:
"ac"
"abecedario"
Cuantificadores de repetición
•El cuantificador signo de interrogación (?), indica que el
elemento anterior se puede repetir cero o una vez, pero no
más de una.
•Ejemplo:
var patron = /ab?c/;
•Habrá coincidencia con: "ac" o "abc".
•No habrá coincidencia con: "abbbbc".
Cuantificadores de repetición
•Existen situaciones en las que es necesario controlar de forma
exacta el número de veces que se debe producir una
repetición o indicar un rango válido de cantidad de
repeticiones.
•Para estos casos se utiliza una nomenclatura especial que son
las llaves ({}). Dentro de las llaves se indica una cantidad de
correspondencias específica permitidas para el elemento
precedente.
Cuantificadores de repetición
Se puede utilizar de tres formas:
1.{m}, indica una cantidad exacta de correspondencias de m
veces; donde m es un valor entero.
2.{m,}, indica una cantidad de correspondencias de m o más
veces.
3.{m,n}, indica una cantidad de correspondencias entre m y
n veces, incluyéndolos.
Cuantificadores de repetición
Carácter Significado
* Coincide el elemento anterior cero o más veces.
+ Coincide el elemento anterior una o más veces.
? Coincide el elemento anterior cero o una vez.
{m,n} Coincide el elemento anterior un mínimo de m veces, pero no más de
n.
{m,} Coincide el elemento anterior m o más veces.
{m} Coincide el elemento anterior exactamente m veces.
Clases de caracteres
•Una particularidad de las expresiones regulares es que
permite definir patrones formados por clases de caracteres.
•Una clase de carácter es una combinación de caracteres
literales individuales encerrados entre corchetes.
•Para encontrar coincidencia con una clase de carácter basta
que un solo carácter de la cadena de prueba (literal de
cadena) sea uno de los definidos en el patrón.
•Por ejemplo: el patrón [0123456789] encontraría
coincidencia con los siguientes literales de cadena: "2227-
3735", "abc 123 +-*"
Clases de caracteres
•Se pueden definir clases de caracteres para números, letras
del alfabeto, minúsculas y mayúsculas, así como clases de
caracteres para símbolos y para signos de puntuación, si se
desea.
•Por ejemplo:
[0123456789], define un patrón para los dígitos.
[abcdefghijklmnopqrstuvwxyz], define un patrón para letras
minúsculas.
[=+-*/], define un patrón para símbolos utilizados para las
operaciones aritméticas básicas.
Clases de caracteres
•También se pueden definir clases de caracteres de negación
anteponiendo un signo de circunflejo (^) al inicio del patrón
colocado entre corchetes.
•Una clase de carácter de negación encontrará coincidencia
con cualquier carácter o secuencia de caracteres que no estén
incluidos en el patrón.
•Por ejemplo, el patrón [^abc] se corresponderá con cualquier
literal de cadena que no sea ni a, ni b, ni c. Por ejemplo: hello,
luz, etc.
Clases de caracteres
•Es posible indicar un rango de caracteres para definir las
clases de caracteres. Esto facilita definir clases de caracteres
cuando se piensan incluir varios caracteres de un mismo tipo.
•Por ejemplo, si se piensa crear un patrón para caracteres
numéricos, en vez de digitar [0123456789], se puede digitar
[0-9], lo cual permite crear patrones de forma más cómoda y
eficiente.
•Para indicar cualquier carácter alfabético en minúsculas o
mayúsculas, podría digitarse un patrón como el siguiente: [a-
zA-Z].
Clases de caracteres
• Además de la notación entre corchetes existen clases de caracteres
que se pueden definir utilizando secuencias o códigos de escape.
• El signo punto (.) se utiliza para indicar que se acepta cualquier
carácter, excepto el carácter de salto de línea.
• s, acepta cualquier carácter de espacio en blanco (barra espaciadora,
tabulación horizontal y vertical, ENTER).
• S, cualquier carácter que no sea espacio en blanco.
• w, para cualquier carácter de palabra.
• W, cualquier carácter que no forma palabras.
• d, cualquier dígito.
• D, cualquier carácter que no sea un dígito.
Clases de caracteres
Carácter Significado
[…] Cualquiera de los caracteres incluidos entre los corchetes.
[^…] Cualquiera de los caracteres no incluidos entre los corchetes.
. Cualquier carácter excepto el de nueva línea.
w Cualquier carácter de palabra: [a-zA-Z0-9_]
W Cualquier carácter que no sea de palabra: [^a-zA-Z0-9_]
s Cualquier carácter de espacio en blanco: [ tnrfv]
S Cualquier carácter que no sea espacio en blanco: [^ tnrfv]
d Cualquier dígito: [0-9]
D Cualquier carácter que no sea dígito: [^0-9]
[b] Tecla de retroceso literal.
Agrupamiento
•Es posible agrupar caracteres utilizando paréntesis. Esto
provocará que el grupo de caracteres sea tratado como una
unidad por los operadores de las expresiones regulares.
•Por ejemplo, el patrón /a(bc)+/ encontrará correspondencias
que contengan cualquier cadena con una a, seguida de una o
más repeticiones de la secuencia "bc".
•Ejemplo de expresión regular con agrupamiento:
Subexpresiones
•Los paréntesis en las expresiones regulares se pueden utilizar
también para crear subexpresiones o subpatrones.
•Las subexpresiones se encierran entre paréntesis definiendo
elementos individuales a los que se puede hacer referencia
dentro del patrón completo.
•Ejemplo:
var carnet = "EG970425";
var patron = /^([A-Z]){2}([0-9]){6}$/;
patron.test(carnet);
Alternativas
•Para crear alternativas dentro de los patrones de expresiones
regulares se incluye otro operador especial, conocido como
operador O lógico (|).
•Este operador se incluye con el carácter especial "|" que debe
colocarse entre varias alternativas de elementos o
subexpresiones para optar por una o la otra.
•Ejemplo:
var url = "http://www.udb.edu.sv";
var patron = /^((http|ftp|https)(://)){1}/;
patron.test(url);
Coincidencia agresiva
•Se conoce también como coincidencia voraz o coincidencia
máxima.
•La coincidencia agresiva es un término que describe el hecho
que, la expresión regular siempre intentará hacer coincidir
tantos caracteres como sea posible.
•Dicho de otro modo, al trabajar con expresiones regulares,
JavaScript siempre intentará hacer coincidir algo, si de algún
modo es posible y coincidirá siempre que sea posible.
•Debe ser muy específico para evitar que la expresión regular
encuentre resultados con más correspondencias de la cuenta.
Coincidencia agresiva
• Para comprenderlo mejor, veamos la siguiente declaración:
var patron = /d{4}-d{4}/;
• A simple vista esta declaración parece apropiada para números de
teléfonos de El Salvador. Hoy en día los números de teléfono están
compuestos de cuatro dígitos, un guión de separación y otros cuatro
dígitos. Si probáramos el número de teléfono: 2251-8212 utilizando el
método test:
alert(patron.test("227-0174"));
alert(patron.test("56533-98762366"));
• Obtendríamos true como resultado en ambos casos. Siendo evidente
que el segundo caso no debería ser así.
• El patrón correcto sería:
var patron = /^d{4}-d{4}$/;
Utilización de expresiones regulares
•Para aplicar expresiones regulares en el análisis de texto
proveniente de formularios, principalmente, se pueden
utilizar una variedad de propiedades y métodos del objeto
RegExp.
•Método test(). Este método es el más sencillo de utilizar.
Devuelve un valor lógico que indica si el argumento de cadena
pasado al método coincide o no con la expresión regular.
Utilización de expresiones regulares
•El método exec(). Este método acepta una cadena con la que
será comparado el patrón y puede escribirse de forma
abreviada invocando el nombre de la RegExp como si fuera
una función.
•Este método devuelve un array con varias propiedades. Las
más importantes son: length (longitud del array), input
(cadena de entrada original), index (índice de la primera
correspondencia) y lastIndex (índice del carácter que sigue a
la correspondencia).
Utilización de expresiones regulares
•También se pueden utilizar métodos del objeto String para el
análisis de expresiones regulares. Estos métodos son:
search(), split(), replace() y match().
•Se estudiarán más detenidamente estos métodos durante la
práctica de laboratorio.
Características de Expresiones Regulares de
Perl no admitidas
•Los indicadores s (modo de una sola línea) y x (sintáxis
extendida).
•Las secuencias de escape: a, e, l, u, L, U, E, Q, A, Z, z y
G.
•El anclaje previo previo positivo (?<= y el anclaje previo
negativo (?!.
•La sintáxis de comentario (?# y otras sintaxis extendidas.
Herramientas para probar expresiones
regulares
•Existen muchos sitios web para probar expresiones regulares;
sin embargo, dos de los más completos son los siguientes:
• http://regexr.com/
• http://leaverou.github.io/regexplained/
FIN
Desarrollo de Aplicaciones Web con
Software Interpretado en el Cliente

Más contenido relacionado

La actualidad más candente

Organización lógica y física.
Organización lógica y física.Organización lógica y física.
Organización lógica y física.Lely
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
medolos tradicionales de desarrollo de software ( cascada - espiral)
medolos tradicionales de desarrollo de software ( cascada - espiral)medolos tradicionales de desarrollo de software ( cascada - espiral)
medolos tradicionales de desarrollo de software ( cascada - espiral)Cristhian Aguilar
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...José Antonio Sandoval Acosta
 
Introducción a php
Introducción a phpIntroducción a php
Introducción a phpalan moreno
 
Vectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosVectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosJanet Brigyth Camacho Medina
 
Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Humano Terricola
 
3 metodologias de desarrollo (clasificacion)
3 metodologias de desarrollo (clasificacion)3 metodologias de desarrollo (clasificacion)
3 metodologias de desarrollo (clasificacion)Arley Gallego
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoLalo Chooper
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingJonathan Bastidas
 

La actualidad más candente (20)

Organización lógica y física.
Organización lógica y física.Organización lógica y física.
Organización lógica y física.
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Formato ieee830
Formato ieee830Formato ieee830
Formato ieee830
 
medolos tradicionales de desarrollo de software ( cascada - espiral)
medolos tradicionales de desarrollo de software ( cascada - espiral)medolos tradicionales de desarrollo de software ( cascada - espiral)
medolos tradicionales de desarrollo de software ( cascada - espiral)
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
 
Desarrollo Orientado a Objetos
Desarrollo Orientado a ObjetosDesarrollo Orientado a Objetos
Desarrollo Orientado a Objetos
 
Introducción a php
Introducción a phpIntroducción a php
Introducción a php
 
Vectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosVectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a Objetos
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1
 
3 metodologias de desarrollo (clasificacion)
3 metodologias de desarrollo (clasificacion)3 metodologias de desarrollo (clasificacion)
3 metodologias de desarrollo (clasificacion)
 
Casos de Uso en UML
Casos de Uso en UMLCasos de Uso en UML
Casos de Uso en UML
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
 

Similar a Expresiones Regulares JavaScript

Similar a Expresiones Regulares JavaScript (20)

Clase 10 expresiones regulares
Clase 10 expresiones regularesClase 10 expresiones regulares
Clase 10 expresiones regulares
 
Expresiones regulares fin
Expresiones regulares finExpresiones regulares fin
Expresiones regulares fin
 
RegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesRegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones Regulares
 
Las variables y constantes
Las variables y constantesLas variables y constantes
Las variables y constantes
 
Programacion C#
Programacion C#Programacion C#
Programacion C#
 
S03.s1 - Material.pdf
S03.s1 - Material.pdfS03.s1 - Material.pdf
S03.s1 - Material.pdf
 
Unidad i antecedentes
Unidad i antecedentesUnidad i antecedentes
Unidad i antecedentes
 
Unidad i antecedentes1
Unidad i antecedentes1Unidad i antecedentes1
Unidad i antecedentes1
 
Script
ScriptScript
Script
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
 
Curso php-my sql-clase-4
Curso php-my sql-clase-4Curso php-my sql-clase-4
Curso php-my sql-clase-4
 
Estructura Sintactica
Estructura SintacticaEstructura Sintactica
Estructura Sintactica
 
Articulo
ArticuloArticulo
Articulo
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Presentación de c #
Presentación de c #Presentación de c #
Presentación de c #
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
4072954.ppt
4072954.ppt4072954.ppt
4072954.ppt
 
Zope Page Templates
Zope Page TemplatesZope Page Templates
Zope Page Templates
 

Último

MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 

Último (20)

Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 

Expresiones Regulares JavaScript

  • 1. UNIDAD II: Expresiones regulares Desarrollo de AplicacionesWeb con Software Interpretados en el Cliente
  • 2. Objetivos •Conseguir un dominio amplio de las expresiones regulares de JavaScript. •Estar en capacidad de utilizar expresiones regulares de forma declarativa y utilizando el objeto RegExp(). •Dominar las técnica para crear una expresión regular •Aplicar los principales métodos para creación de expresiones regulares
  • 3. Contenido 1. Definición de expresiones regulares. 2.Por qué son tan importantes las Expresiones Regulares. 3. Crear expresiones regulares en JavaScript. 4.Usar códigos de escape para caracteres que generan ambigüedad. 5. Modificadores de las expresiones regulares. 6.Indicadores de posición. 7. Cuantificadores de repetición.
  • 4. Contenido 8.Clases de caracteres. 9.Agrupamiento. 10.Subexpresiones. 11.Alternativas. 12.Coincidencia agresiva. 13.Herramientas para probar expresiones regulares. 14.Características de Expresiones Regulares de Perl no admitidas en JavaScript.
  • 5. Definición de expresiones regulares •Una expresión regular es básicamente un patrón de caracteres que se define con el objeto de realizar comparaciones en busca de coincidencias con cadenas de prueba. •Las RegExp permiten el reconocimiento y extracción de casi cualquier tipo de cadena con formato predecible como pueden ser: direcciones URL, direcciones IP, direcciones de correo electrónico, números de identificación, números de teléfono, números de tarjetas de crédito, códigos postales, números de matrícula (placa), etc. •Entre las utilidades más usuales de las RegExp están la comprobación de datos introducidos en formularios, la búsqueda y sustitución de texto, etc.
  • 6. Definición de expresiones regulares •Las expresiones regulares se componen de caracteres, ya sea solos o en combinación con caracteres especiales que se utilizan para crear expresiones regulares más complejas
  • 7. Definición de expresiones regulares • En JavaScript, una expresión regular es un objeto que describe un patrón de caracteres que se crea mediante un objeto RegExp que representa a las expresiones regulares. • Tanto RegExp como String, definen métodos que utilizan expresiones regulares para realizar búsquedas de coincidencia de patrones eficaces, así como funciones de reemplazo en el texto analizado. • Las expresiones regulares en JavaScript, se estandarizaron en ECMAScript v3. JavaScript 1.2 implementa un subconjunto de opciones de expresión regular requeridas por ECMAScript v3 y JavaScript 1.5 implementa todo el estándar. • JavaScript implementa las expresiones regulares basadas principalmente en las funciones de expresión regular del lenguaje Perl.
  • 8. Por qué son tan importantes las Expresiones Regulares •Aunque dicho en palabras no es tan evidente explicar la importancia de las expresiones regulares, intentaremos explicarlo diciendo que tareas que usando cualquier otra metodología de programación pudieran tomarnos varias líneas de código, con una expresión regular bien planteada, podríamos realizar con una única instrucción. •Es así que las expresiones regulares son especialmente útiles para hacer trivial el proceso de descomponer cadenas y buscar o extraer información de estas.
  • 9. Por qué son tan importantes las Expresiones Regulares •A pesar de la afirmación anterior, la única manera evidente de comprobar lo increíble e importante que son las expresiones regulares es con un ejemplo práctico: •Imagine la siguiente situación: se quiere validar una cadena para verificar que sea un código postal válido en los Estados Unidos, que sigue el siguiente formato 99999-9999, en donde cada 9 representa un dígito decimal. •Sin la existencia de las expresiones regulares, una posible solución elegante del problema de verificar si un dato ingresado coincide o no con un código postal de los Estados Unidos, sería la siguiente.
  • 10. Por qué son tan importantes las Expresiones Regulares function isZipCode(zipcode){ if(typeof zipcode!=="string" || zipcode.length!=10) return false; for(var i=0; i<zipcode.length; i++){ var car = zipcode[i]; switch(i){ case 0: case 1: case 2: case 3: case 4: case 6: case 7: case 8: case 9: if(car<'0' || car>'9') return false; break; case 5: if(car!='-') return false; break; } } return true; }
  • 11. Por qué son tan importantes las Expresiones Regulares •El código anterior saca partido del hecho que sólo se requieren dos tipos de comprobaciones distintas, una para los dígitos del 0 al 9 y la otra un simple guión de separación en donde la única posición distinta de donde se espera el guión y no un entero es en el sexto carácter, que debe estar ubicado en el índice 5 de la matriz o arreglo. •Observe la solución, usando expresiones regulares y cómo simplifica la cantidad de código requerido, pero mejor aún la eficiencia de la solución que evita la utilización del ciclo repetitivo.
  • 12. Por qué son tan importantes las Expresiones Regulares function isZipCode(zipcode){ return /^d{5}-d{4}$/.test(zipcode); } •Aunque le parezca mentira la función iterativa anterior de 15 líneas es reducida a 3 líneas usando expresiones regulares. •De esto se trata el increíble poder de las expresiones regulares, de hacer una tarea aparentemente compleja en una o pocas líneas. •Aprenderemos mucho de expresiones regulares en esta clase, así que a poner atención sobre todos los conceptos y operadores que poseen.
  • 13. Creación de expresiones regulares En JavaScript existen dos formas de crear o declarar una expresión regular, que son: 1. Usando literales de expresiones, que es la forma más usual y extendida: var re = /ab + c/; 2. Utilizando el constructor del objeto RegExp: var re = new RegExp("ab + c"); Es de notar la diferencia que hay en cada una de las formas en que se delimitan los patrones que definen la expresión regular.
  • 14. Uso de códigos de escape •Al igual que ocurre con las cadenas de caracteres, en las expresiones regulares también hay ciertos caracteres que generan ambigüedad en la expresión y por tanto deben escaparse si se desean incluir dentro de un patrón. •Entre algunos de los caracteres problemáticos más comunes están las barras de división que son justamente iguales a los delimitadores de expresiones regulares en la sintaxis declarativa. •Puede examinar un conjunto bastante completo de códigos de escape en la guía de práctica #6.
  • 15. Modificadores de las expresiones regulares En las expresiones regulares existen modificadores que alteran la interpretación del patrón para una expresión regular. Los principales modificadores son tres: Carácter Significado i No se hace distinción entre mayúsculas y minúsculas. g Correspondencia global; es decir, se buscan todas las correspondencias dentro de la cadena, no solo la primera. m Se busca correspondencia en líneas múltiples.
  • 16. Ejemplos usando modificadores Usando objeto inicializador: var patron1 = /http:///i; var patron2 = /universidad/i; Usando el constructor RegExp(): var patron1 = new RegExp("http://", "i"); var patron2 = new RegExp("universidad", "i");
  • 17. Ejemplo de expresión regular declarativa Observe la siguiente expresión regular: • En el literal de expresión regular anterior, los símbolos "/" y "/" delimitan la expresión regular. • La letra g, al final del literal indica que se realizará una comparación global con cualquier cadena de prueba, de modo que si existe más de una coincidencia se seguirá comparando hasta encontrarlas todas. Por defecto, si no se incluye la letra "g" sólo se encuentra la primera coincidencia. • w y d son clases de caracteres que indican cualquier carácter de palabra o cualquier carácter dígito, respectivamente. • {#} es un cuantificador de repetición.
  • 18. Ejemplo de expresión regular con el constructor RegExp Observe la siguiente expresión regular: • El constructor anterior acepta dos argumentos. El primero es la expresión regular en sí y el segundo es el modificador, que en este caso indica que se realice una búsqueda global sobre la cadena de prueba. • Observe que en este caso, con el constructor d es necesario escapar el carácter de barra invertida con otra barra invertida, quedando d. • La expresión regular anterior valida números de tarjetas de crédito del formato: 9999-9999-9999-9999 comunes en tarjetas VISA y Master Card.
  • 19. Indicadores de posición Dentro de las expresiones regulares existen una serie de caracteres especiales que se utilizan para definir patrones de forma más precisa. El primer grupo de esos tipos de caracteres especiales son los indicadores de posición, que se utilizan para indicar la posición en la que tiene que estar el patrón en la cadena para que se de una coincidencia. Carácter Significado ^ El patrón debe aparecer al comienzo de la cadena o de la línea. $ El patrón debe aparecer al final de la cadena o de la línea. b Coincide con un límite de palabra; es decir, con la posición entre un carácter w y un carácter W o entre el carácter w y el inicio o el final de una cadena. B Coincide con una posición que no es límite de palabra. (?=p) Afirmación previa positiva que requiere que los siguientes caracteres coincidan con el patrón p, pero sin incluir realmente dichos caracteres en la coincidencia. (?!p) Afirmación previa negativa que requiere que los siguientes caracteres no coincidan con el patrón p.
  • 20. Utilización de indicadores de posición •Los indicadores de posición establecerán qué elemento debe aparecer al inicio y/o al final del patrón para aceptar una coincidencia. •Cuando no se especifican indicadores de posición la coincidencia se produce, si se encuentra el patrón en la cadena, en cualquier posición, no necesariamente al inicio o al final.
  • 21. Ejemplos de indicadores de posición •Con sintaxis declarativa (objeto inicializador): var re = /^<input type=/; var htmltag = "<input type='text' name='txtname'>"; var coinciden = re.test(htmltag); •Con el constructor RegExp: var re = new RegExp("^<input type="); var htmltag = "<input type='text' name='txtname'>"; var coinciden = re.test(htmltag);
  • 22. Cuantificadores de repetición • Entre los cuantificadores de repetición más utilizados está el asterisco (*), que se utiliza para indicar que el elemento anterior se puede repetir cero, o más, veces. • Ejemplo: var patron = /zy*x/; • Habrá coincidencia con literales de cadena como: "zx" "zyx" "zyyyyyyyyyyyyyyyx" "Las letras zyx son las últimas letras del abecedario" • No habrá coincidencia con: "abexzedaryo" "yx" "zy"
  • 23. Cuantificadores de repetición • Otro cuantificador de repetición es el signo más (+), que se utiliza para indicar que el elemento anterior se debe repetir una o más veces. • Ejemplo: var patron = /ab+c/; • Existirá coincidencia con: "abc" "abbbbbbbbbbbbbbc" "Las letras abc son las primeras letras del abecedario" • No existirá coincidencia con: "ac" "abecedario"
  • 24. Cuantificadores de repetición •El cuantificador signo de interrogación (?), indica que el elemento anterior se puede repetir cero o una vez, pero no más de una. •Ejemplo: var patron = /ab?c/; •Habrá coincidencia con: "ac" o "abc". •No habrá coincidencia con: "abbbbc".
  • 25. Cuantificadores de repetición •Existen situaciones en las que es necesario controlar de forma exacta el número de veces que se debe producir una repetición o indicar un rango válido de cantidad de repeticiones. •Para estos casos se utiliza una nomenclatura especial que son las llaves ({}). Dentro de las llaves se indica una cantidad de correspondencias específica permitidas para el elemento precedente.
  • 26. Cuantificadores de repetición Se puede utilizar de tres formas: 1.{m}, indica una cantidad exacta de correspondencias de m veces; donde m es un valor entero. 2.{m,}, indica una cantidad de correspondencias de m o más veces. 3.{m,n}, indica una cantidad de correspondencias entre m y n veces, incluyéndolos.
  • 27. Cuantificadores de repetición Carácter Significado * Coincide el elemento anterior cero o más veces. + Coincide el elemento anterior una o más veces. ? Coincide el elemento anterior cero o una vez. {m,n} Coincide el elemento anterior un mínimo de m veces, pero no más de n. {m,} Coincide el elemento anterior m o más veces. {m} Coincide el elemento anterior exactamente m veces.
  • 28. Clases de caracteres •Una particularidad de las expresiones regulares es que permite definir patrones formados por clases de caracteres. •Una clase de carácter es una combinación de caracteres literales individuales encerrados entre corchetes. •Para encontrar coincidencia con una clase de carácter basta que un solo carácter de la cadena de prueba (literal de cadena) sea uno de los definidos en el patrón. •Por ejemplo: el patrón [0123456789] encontraría coincidencia con los siguientes literales de cadena: "2227- 3735", "abc 123 +-*"
  • 29. Clases de caracteres •Se pueden definir clases de caracteres para números, letras del alfabeto, minúsculas y mayúsculas, así como clases de caracteres para símbolos y para signos de puntuación, si se desea. •Por ejemplo: [0123456789], define un patrón para los dígitos. [abcdefghijklmnopqrstuvwxyz], define un patrón para letras minúsculas. [=+-*/], define un patrón para símbolos utilizados para las operaciones aritméticas básicas.
  • 30. Clases de caracteres •También se pueden definir clases de caracteres de negación anteponiendo un signo de circunflejo (^) al inicio del patrón colocado entre corchetes. •Una clase de carácter de negación encontrará coincidencia con cualquier carácter o secuencia de caracteres que no estén incluidos en el patrón. •Por ejemplo, el patrón [^abc] se corresponderá con cualquier literal de cadena que no sea ni a, ni b, ni c. Por ejemplo: hello, luz, etc.
  • 31. Clases de caracteres •Es posible indicar un rango de caracteres para definir las clases de caracteres. Esto facilita definir clases de caracteres cuando se piensan incluir varios caracteres de un mismo tipo. •Por ejemplo, si se piensa crear un patrón para caracteres numéricos, en vez de digitar [0123456789], se puede digitar [0-9], lo cual permite crear patrones de forma más cómoda y eficiente. •Para indicar cualquier carácter alfabético en minúsculas o mayúsculas, podría digitarse un patrón como el siguiente: [a- zA-Z].
  • 32. Clases de caracteres • Además de la notación entre corchetes existen clases de caracteres que se pueden definir utilizando secuencias o códigos de escape. • El signo punto (.) se utiliza para indicar que se acepta cualquier carácter, excepto el carácter de salto de línea. • s, acepta cualquier carácter de espacio en blanco (barra espaciadora, tabulación horizontal y vertical, ENTER). • S, cualquier carácter que no sea espacio en blanco. • w, para cualquier carácter de palabra. • W, cualquier carácter que no forma palabras. • d, cualquier dígito. • D, cualquier carácter que no sea un dígito.
  • 33. Clases de caracteres Carácter Significado […] Cualquiera de los caracteres incluidos entre los corchetes. [^…] Cualquiera de los caracteres no incluidos entre los corchetes. . Cualquier carácter excepto el de nueva línea. w Cualquier carácter de palabra: [a-zA-Z0-9_] W Cualquier carácter que no sea de palabra: [^a-zA-Z0-9_] s Cualquier carácter de espacio en blanco: [ tnrfv] S Cualquier carácter que no sea espacio en blanco: [^ tnrfv] d Cualquier dígito: [0-9] D Cualquier carácter que no sea dígito: [^0-9] [b] Tecla de retroceso literal.
  • 34. Agrupamiento •Es posible agrupar caracteres utilizando paréntesis. Esto provocará que el grupo de caracteres sea tratado como una unidad por los operadores de las expresiones regulares. •Por ejemplo, el patrón /a(bc)+/ encontrará correspondencias que contengan cualquier cadena con una a, seguida de una o más repeticiones de la secuencia "bc". •Ejemplo de expresión regular con agrupamiento:
  • 35. Subexpresiones •Los paréntesis en las expresiones regulares se pueden utilizar también para crear subexpresiones o subpatrones. •Las subexpresiones se encierran entre paréntesis definiendo elementos individuales a los que se puede hacer referencia dentro del patrón completo. •Ejemplo: var carnet = "EG970425"; var patron = /^([A-Z]){2}([0-9]){6}$/; patron.test(carnet);
  • 36. Alternativas •Para crear alternativas dentro de los patrones de expresiones regulares se incluye otro operador especial, conocido como operador O lógico (|). •Este operador se incluye con el carácter especial "|" que debe colocarse entre varias alternativas de elementos o subexpresiones para optar por una o la otra. •Ejemplo: var url = "http://www.udb.edu.sv"; var patron = /^((http|ftp|https)(://)){1}/; patron.test(url);
  • 37. Coincidencia agresiva •Se conoce también como coincidencia voraz o coincidencia máxima. •La coincidencia agresiva es un término que describe el hecho que, la expresión regular siempre intentará hacer coincidir tantos caracteres como sea posible. •Dicho de otro modo, al trabajar con expresiones regulares, JavaScript siempre intentará hacer coincidir algo, si de algún modo es posible y coincidirá siempre que sea posible. •Debe ser muy específico para evitar que la expresión regular encuentre resultados con más correspondencias de la cuenta.
  • 38. Coincidencia agresiva • Para comprenderlo mejor, veamos la siguiente declaración: var patron = /d{4}-d{4}/; • A simple vista esta declaración parece apropiada para números de teléfonos de El Salvador. Hoy en día los números de teléfono están compuestos de cuatro dígitos, un guión de separación y otros cuatro dígitos. Si probáramos el número de teléfono: 2251-8212 utilizando el método test: alert(patron.test("227-0174")); alert(patron.test("56533-98762366")); • Obtendríamos true como resultado en ambos casos. Siendo evidente que el segundo caso no debería ser así. • El patrón correcto sería: var patron = /^d{4}-d{4}$/;
  • 39. Utilización de expresiones regulares •Para aplicar expresiones regulares en el análisis de texto proveniente de formularios, principalmente, se pueden utilizar una variedad de propiedades y métodos del objeto RegExp. •Método test(). Este método es el más sencillo de utilizar. Devuelve un valor lógico que indica si el argumento de cadena pasado al método coincide o no con la expresión regular.
  • 40. Utilización de expresiones regulares •El método exec(). Este método acepta una cadena con la que será comparado el patrón y puede escribirse de forma abreviada invocando el nombre de la RegExp como si fuera una función. •Este método devuelve un array con varias propiedades. Las más importantes son: length (longitud del array), input (cadena de entrada original), index (índice de la primera correspondencia) y lastIndex (índice del carácter que sigue a la correspondencia).
  • 41. Utilización de expresiones regulares •También se pueden utilizar métodos del objeto String para el análisis de expresiones regulares. Estos métodos son: search(), split(), replace() y match(). •Se estudiarán más detenidamente estos métodos durante la práctica de laboratorio.
  • 42. Características de Expresiones Regulares de Perl no admitidas •Los indicadores s (modo de una sola línea) y x (sintáxis extendida). •Las secuencias de escape: a, e, l, u, L, U, E, Q, A, Z, z y G. •El anclaje previo previo positivo (?<= y el anclaje previo negativo (?!. •La sintáxis de comentario (?# y otras sintaxis extendidas.
  • 43. Herramientas para probar expresiones regulares •Existen muchos sitios web para probar expresiones regulares; sin embargo, dos de los más completos son los siguientes: • http://regexr.com/ • http://leaverou.github.io/regexplained/
  • 44. FIN Desarrollo de Aplicaciones Web con Software Interpretado en el Cliente