Compartir a través de


Comportamiento de ECMAScript frente al comportamiento normal del motor de búsqueda de coincidencias

Actualización: noviembre 2007

El comportamiento de ECMAScript y de las expresiones regulares canónicas difiere en tres aspectos:

  • Las clases de carácter se especifican de distintas manera en las expresiones de búsqueda de coincidencia. Las expresiones regulares canónicas admiten de forma predeterminada las categorías de caracteres Unicode. ECMAScript no es compatible con Unicode.

  • Una clase de captura de expresiones regulares con una referencia inversa se debe actualizar en cada iteración de captura.

  • Las ambigüedades entre escapes octales y referencias inversas son tratadas de forma distinta.

Nota:

De forma predeterminada, el motor de expresiones regulares utiliza el comportamiento normal de búsqueda de coincidencias. El comportamiento conforme a ECMAScript se utiliza cuando el parámetro options del constructor Regex.Regex(String, RegexOptions) o de este tipo de métodos de búsqueda de coincidencias con expresiones regulares, como Regex.Match(String, String, RegexOptions), Regex.Matches(String, String, RegexOptions) y Regex.Replace(String, String, String, RegexOptions), contiene el marcador RegexOptions.ECMAScript.

En la tabla siguiente se resumen las diferencias en la interpretación de octales y de referencias inversas con expresiones canónicas y con expresiones regulares ECMAScript.

Comportamiento de expresiones regulares canónicas

Comportamiento ECMAScript

Si \ va seguida de 0, seguido de 0 a 2 dígitos octales, se interpreta como un octal. Por ejemplo, \044 siempre significa '$'.

El mismo comportamiento

Si \ va seguida de un dígito del 1 al 9, sin dígitos decimales adicionales, se interpreta como una referencia inversa. Por ejemplo, \9 siempre significa una referencia inversa de 9, aunque la captura de 9 no exista. Si la captura no existe, el analizador de expresiones regulares produce una excepción de sintaxis.

Si existe una sola captura de dígitos decimales, se interpreta como una referencia inversa de ese dígito. En caso contrario, se interpreta como un literal.

Si \ va seguida de un dígito del 1 al 9 y, a continuación, de dígitos de decimales adicionales, se interpreta como un valor decimal. Si existe dicha captura, la expresión se interpreta como una referencia inversa.

De lo contrario, se interpretan los dígitos octales iniciales hasta el octal 377, es decir, sólo se tienen en cuenta los 8 bits de orden inferior del valor; el resto de los dígitos se interpretan como literales. Por ejemplo, en la expresión \3000, si existe la captura de 300, se interpreta como una referencia inversa de 300; si no existe la captura de 300, se interpreta como el octal 300 seguido de 0.

Si \ va seguida de un dígito del 1 al 9, seguido de cualquier dígito decimal adicional, se interpreta como una referencia inversa convirtiendo los dígitos que sea posible a un valor decimal que haga referencia a una captura. Si no se puede convertir ningún dígito, se interpreta como un octal y, para ello, se utilizan los dígitos octales iniciales hasta el octal 377; los dígitos restantes se interpretan como literales.

Vea también

Otros recursos

Elementos del lenguaje de expresiones regulares