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. |