|
Las expresiones regulares
constituyen un mecanismo bastante potente para realizar manipulaciones
de cadenas de texto. El proceso para el que
se usan estas expresiones,
presente en el mundo el UNIX y el lenguaje Perl, es el de buscar y/o substituir
una subcadena de texto dentro de otra cadena. En principio esto puede
hacerse
usando los métodos del objeto string,
pero el problema surge cuando no tenemos una subcadena fija y concreta sino
que
queremos buscar un texto que responda a un cierto esquema, como por ejemplo:
buscar aquellas palabras que comienzan con http: y finalizan con una \,
o
buscar palabras que contengan una serie de números consecutivos, etc.;
es en estos casos cuando tenemos que utilizar las expresiones regulares.
La
subcadena que buscamos en el texto es lo que se llama un patrón
y se construye encerrando entre dos barras inclinadas ( / ) una serie
de caracteres
normales y símbolos especiales llamados comodines o metacaracteres,
(algo parecido a buscar archivos con nombre *.bat cuando queremos encontrar
los ficheros con extensión bat). Este patrón es
una descripción
del texto que se está buscando y JavaScript encontrará las
subcadenas que concuerdan con ese patrón o definición. Las
expresiones regulares se usan con el objeto Regular
Expresion y también dentro de los métodos
String.match, String.replace,
String.search y String.split.
En la tabla que sigue se muestran los caracteres comodín usados
para crear los patrones y su significado, junto a un pequeño ejmplo
de su utilización.
|
Significado |
Ejemplo |
Resultado |
\ |
Marca de carácter especial |
/\$ftp/ |
Busca la palabra $ftp |
^ |
Comienzo de una línea |
/^-/ |
Líneas que comienzan por - |
$ |
Final de una línea |
/s$/ |
Líneas que terminan por s |
. |
Cualquier carácter (menos salto de línea) |
/\b.\b/ |
Palabras de una sóla letra |
| |
Indica opciones |
/(L|l|f|)ocal/ |
Busca Local, local, focal |
(
) |
Agrupar caracteres |
/(vocal)/ |
Busca vocal |
[
] |
Conjunto de caracteres opcionales |
/escrib[aoe]/ |
Vale escriba, escribo, escribe |
La tabla que sigue describe los modificadores que pueden usarse con los
caracteres que forman el patrón. Cada modificador actúa sobre
el carácter o el paréntesis inmediatamente anterior.
|
Descripción |
Ejemplo |
Resultado |
* |
Repetir 0 o más veces |
/l*234/ |
Valen 234, 1234, 11234... |
+ |
Repetir 1 o más veces |
/a*mar/ |
Valen amar, aamar, aaamar... |
? |
1 o 0 veces |
/a?mar/ |
Valen amar, mar. |
{n} |
Exactamente n veces |
/p{2}sado/ |
Vale ppsado |
{n,} |
Al menos n veces |
/(m){2}ala/ |
Vale mmala, mmmala.... |
{m,n} |
entre m y n veces |
/tal{1,3}a/ |
Vale tala, talla, tallla |
Los siguientes son caracteres especiales o metacaracteres para indicar
caracteres de texto no imprimibles, como puedan ser el fín de línea
o un tabulador, o grupos predefinidos de caracteres (alfabéticos,
numéricos, etc...)
|
Significado |
Ejemplos |
Resultado |
| \b |
Principio o final de palabra |
/\bver\b/ |
Encuentra ver en "ver de", pero no
en "verde" |
| \B |
Frontera entre no-palabras |
/\Bver\B/ |
Empareja ver con "Valverde" pero
no con "verde" |
| \d |
Un dígito |
/[A-Z]\d/ |
No falla en "A4" |
| \D |
Alfabético (no dígito) |
/[A-Z]\D/ |
Fallaría en "A4" |
| \O |
Carácter nulo |
|
|
| \t |
Caracter ASCII 9 (tabulador) |
|
|
| \f |
Salto de página |
|
|
| \n |
Salto de línea |
|
|
| \w |
Cualquier alfanumérico,
[a-zA-Z0-9_ ] |
/\w+/ |
Encuentra frase en "frase.",
pero no el . (punto). |
| \W |
Opuesto a \w
([^a-zA-Z0-9_ ]) |
/\W/ |
Hallaría sólo el punto (.) |
| \s |
Carácter tipo espacio (como tab) |
/\sSi\s/ |
Encuentra Si en "Digo Si ", pero
no en "Digo Sientate" |
| \S |
Opuesto a \s |
|
|
| \cX |
Carácter de control X |
\c9 |
El tabulador |
| \oNN |
Carácter octal NN |
|
|
| \xhh |
El hexadecimal hh |
/\x41/ |
Encuentra la A (ASCII Hex41) en "letra
A" |
|