Cuantificadores

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

Los cuantificadores se utilizan para especificar repeticiones de caracteres o secuencias en patrones, de la manera siguiente:

Metacarácter de cuantificador

Descripción

* (asterisco)

Detecta el elemento anterior repetido cero o más veces.

+ (más)

Detecta el elemento anterior repetido una o más veces.

? (signo de interrogación)

Detecta el elemento anterior repetido cero veces o una sola vez.

{ n }

{ n ,}

y

{ n , n }

Especifica un cuantificador numérico o un rango de cuantificadores para el elemento anterior:

/A{27}/ detecta el carácter A repetido 27 veces.

/A{3,}/ detecta el carácter A repetido 3 o más veces.

/A{3,5}/ detecta el carácter A repetido entre 3 y 5 veces.

Se puede aplicar un cuantificador a un solo carácter, a una clase de caracteres o a un grupo:

  • /a+/ detecta el carácter a repetido una o más veces.

  • /\d+/ detecta uno o más dígitos.

  • /[abc]+/ detecta una repetición de uno o más caracteres, cada uno de las cuales puede ser a , b o c .

  • /(very, )*/ detecta la palabra very seguida de una coma y un espacio repetido cero o más veces.

Se pueden utilizar cuantificadores dentro de grupos delimitados por paréntesis que tengan cuantificadores aplicados. Por ejemplo, el siguiente cuantificador detecta cadenas como word y word-word-word :

/\w+(-\w+)*/

De manera predeterminada, las expresiones regulares realizan lo que se conoce como una detección de la coincidencia más larga posible (greedy matching). Cualquier subpatrón de la expresión regular (como .* ) intentará detectar la mayor cantidad posible de caracteres en la cadena antes de pasar a la siguiente parte de la expresión regular. Por ejemplo, considérense la expresión regular y la cadena siguientes:

var pattern:RegExp = /<p>.*<\/p>/; 
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";

La expresión regular detecta toda la cadena:

<p>Paragraph 1</p> <p>Paragraph 2</p>

Sin embargo, si solo se desea detectar una agrupación <p>...</p> , se puede hacer lo siguiente:

<p>Paragraph 1</p>

Añadir un signo de interrogación ( ? ) a continuación de cualquier cuantificador para convertirlo en un cuantificador perezoso , que detecta la coincidencia más corta posible. Por ejemplo, la siguiente expresión regular, que utiliza un cuantificador de este tipo, *? , detecta <p> seguido del mínimo número posible de caracteres, seguidos de </p> :

/<p>.*?<\/p>/

Hay que tener en cuenta los siguientes aspectos sobre los cuantificadores:

  • Los cuantificadores {0} y {0,0} no excluyen un elemento de una coincidencia.

  • No se deben combinar varios cuantificadores, como en /abc+*/ .

  • El punto (.) no abarca líneas a menos que se establezca el indicador s ( dotall ), aunque esté seguido de un cuantificador * . Por ejemplo, considérese el fragmento de código siguiente:

    var str:String = "<p>Test\n"; 
    str += "Multiline</p>"; 
    var re:RegExp = /<p>.*<\/p>/; 
    trace(str.match(re)); // null; 
     
    re = /<p>.*<\/p>/s; 
    trace(str.match(re)); 
        // output: <p>Test 
        //                    Multiline</p>

Para más información, consulte Indicadores y propiedades .