Share via


Comportement de correspondance des expressions régulières ECMASCRIPT et canoniques

Le comportement des expressions régulières ECMAScript et canoniques diffère sur trois points :

  • Les classes de caractères sont définies différemment dans les expressions de correspondance. Les expressions régulières canoniques prennent en charge les catégories de caractères Unicode par défaut. ECMAScript ne prend pas en charge Unicode.

  • Une classe de captures d'expressions régulières avec une backreference vers elle-même doit être mise à jour à chaque itération de capture.

  • Les ambiguïtés entre les backreferences et les séquences d'échappement octales sont traitées différemment.

Le tableau suivant récapitule les différences d'interprétation octale et backreference par les expressions régulières canoniques et ECMAScript.

Comportement des expressions régulières canoniques Comportement ECMAScript

La barre oblique inverse \ suivie de 0 à 2 chiffres octaux doit être interprétée comme un octal. Par exemple, \044 correspond toujours à '$'.

Comportement identique.

La barre oblique inverse \ suivie d'un chiffre compris entre 1 et 9 et d'aucun autre chiffre décimal supplémentaire doit être interprétée comme une backreference. Par exemple, \9 signifie toujours backreference 9, même si capture 9 n'existe pas. Si la capture n'existe pas, l'analyseur d'expression régulière lève une exception syntaxique.

S'il existe une capture à un seul chiffre décimal, elle doit être interprétée comme une backreference à ce chiffre. Sinon, elle doit être interprétée comme un littéral.

Si la barre oblique inverse \ est suivie d'un chiffre compris entre 1 et 9 et de chiffres décimaux supplémentaires, interprétez les chiffres comme une valeur décimale. Si cette capture existe, interprétez l'expression comme une backreference.

Sinon, interprétez les chiffres octaux de gauche jusqu'à l'octal 377, c'est-à-dire considérez uniquement les 8 bits bas de la valeur ; interprétez les chiffres restants comme des littéraux. Par exemple, dans l'expression \3000, si capture 300 existe, interprétez-la comme backreference 300, et comme octal 300 suivi de 0 dans le cas contraire.

La barre oblique inverse suivie d'un chiffre compris entre 1 et 9, et d'un nombre quelconque de chiffres décimaux supplémentaires, doit être interprétée comme une backreference en convertissant autant de chiffres que possible à une valeur décimale pouvant faire référence à une capture. Si aucun chiffre ne peut être converti, interprétez-la comme un octal à l'aide des chiffres octaux de gauche jusqu'à l'octal 377 ; interprétez les chiffres restants comme des littéraux.

Voir aussi

Autres ressources

Éléments du langage des expressions régulières