Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

RegExp : propriété unicode

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.

La propriété d'accesseur unicode des instance de RegExp retourne que l'indicateur u est utilisée ou non avec cette expression rationnelle.

Exemple interactif

const regex1 = /\u{61}/;
const regex2 = /\u{61}/u;

console.log(regex1.unicode);
// Résultat attendu : false

console.log(regex2.unicode);
// Résultat attendu : true

Description

RegExp.prototype.unicode a la valeur true si l'indicateur u a été utilisé ; sinon, false. L'indicateur u active diverses fonctionnalités liées à Unicode. Avec l'indicateur « u » :

  • Toute échappement de point de code Unicode (\u{xxxx}, \p{UnicodePropertyValue}) est interprétée comme telle au lieu d'être un simple échappement d'identité. Par exemple, /\u{61}/u correspond à "a", mais /\u{61}/ (sans l'indicateur u) correspond à "u".repeat(61), où le \u est équivalent à un simple u.
  • Les assertions de limite de tampon (\A, \z, \Z) sont interprétées comme telles au lieu d'être des simples échappements d'identité.
  • Les paires de substitution sont interprétées comme des caractères entiers au lieu de deux caractères séparés. Par exemple, /[😄]/u ne correspond qu'à "😄" mais pas à "\ud83d".
  • Lorsque lastIndex est automatiquement avancé (comme lors de l'appel de exec()), les expressions rationnelles Unicode avancent par points de code Unicode au lieu d'unités de code UTF-16.

Il existe d'autres changements dans le comportement de l'analyse qui empêchent d'éventuelles erreurs de syntaxe (qui sont analogues au mode strict pour la syntaxe des expressions rationnelles). Ces syntaxes sont toutes obsolètes et conservées uniquement pour la compatibilité web, et vous ne devez pas vous y fier.

L'accesseur définit unicode sur undefined. Vous ne pouvez pas modifier cette propriété directement.

Mode sensible à l'Unicode

Lorsque nous faisons référence au mode sensible à l'Unicode, nous entendons que l'expression rationnelle a soit l'indicateur u, soit l'indicateur v, auquel cas l'expression rationnelle active les fonctionnalités liées à Unicode (telles que l'échappement de classe de caractères Unicode) et a des règles de syntaxe beaucoup plus strictes. Comme u et v interprètent la même expression rationnelle de manière incompatible, l'utilisation des deux indicateurs entraîne une SyntaxError.

De même, une expression rationnelle est insensible à l'Unicode si elle n'a ni l'indicateur u ni l'indicateur v. Dans ce cas, l'expression rationnelle est interprétée comme une séquence d'unités de code UTF-16, et il existe de nombreuses syntaxes héritées qui ne deviennent pas des erreurs de syntaxe.

Exemples

Utiliser la propriété unicode

js
const regex = /\u{61}/u;

console.log(regex.unicode); // true

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-get-regexp.prototype.unicode

Compatibilité des navigateurs

Voir aussi