Compartilhar via


ECMAScript versus Comportamento de Correspondência Canônica

O comportamento de expressões regulares canônicas e ECMAScript difere em três áreas:

  • Classes de caracteres são especificadas de forma diferente na correspondência expressões.Expressões regulares canônicas dão suporte a categorias de caracteres UNICODE por padrão.ECMAScript não tem suporte para Unicode.

  • Uma classe de captura de expressões regulares com um referência anterior a si mesma deve ser atualizada a cada iteração de captura.

  • Ambiguidades entre escapes octais escapa e referências anteriores são tratadas de maneira diferente.

Observação:

Por padrão, o mecanismo de expressão regular usa canônico comportamento correspondente.Comportamento compatível com ECMAScript é usado quando o options parâmetro das Regex.Regex(String, RegexOptions) construtor ou de tais expressões regulares correspondentes métodos sistema autônomo Regex.Match(String, String, RegexOptions), Regex.Matches(String, String, RegexOptions), e Regex.Replace(String, String, String, RegexOptions) inclui o RegexOptions.ECMAScript sinalizar.

A tabela a seguir resume as diferenças entre octais e interpretação de referência anterior através de expressões regulares canônicas e ECMAScript.

Comportamento de expressão regular canônica

Comportamento ECMAScript

Se \ é seguido por 0 que é seguido por 0 a 2 dígitos octais, interprete como um octal.Por exemplo, \044 sempre significa '$'.

Mesmo comportamento.

Se \ é seguido por um dígito de 1 a 9, seguido por mais nenhum dígito decimal adicional, interprete como uma referência anterior.Por exemplo, \9 sempre significa referência anterior 9, mesmo se não existe a captura 9.Se a captura não existir, o analisador de expressão regular gera uma exceção de sintaxe.

Se um único dígito decimal de captura existir, faça um referência anterior para esse dígito.Caso contrário, o interprete como um literal.

Se \ é seguido por um dígito de 1 a 9, seguido por dígitos decimais adicionais, interprete como um valor decimal.Se essa captura existir, a interprete como referência anterior.

Caso contrário, interprete os dígitos octais até o octal 377, ou seja, considere somente os 8 bits baixos do valor; interprete os dígitos restantes como literais.Por exemplo, na expressão \3000, se existir a captura 300, interprete como referência anterior 300; se a captura 300 não existir, interprete 300 como octal seguido por 0.

Se \ é seguido por um dígito de 1 a 9, seguido por qualquer dígito decimal, interprete como uma referência anterior convertendo o maior número de dígitos possível para um valor decimal que possa fazer referência a uma captura.Se nenhum dígito puder ser convertido, interprete como um octal usando os dígitos octais até o octal 377; interprete os dígitos restantes como literais.

Consulte também

Outros recursos

Elementos de linguagem das expressões regulares