Maison > interface Web > js tutoriel > le corps du texte

Pourquoi les tests JavaScript RegEx échouent-ils ?

Barbara Streisand
Libérer: 2024-10-18 13:27:02
original
520 Les gens l'ont consulté

Why Does JavaScript RegEx Testing Fail?

Échec des tests JavaScript RegEx : décoder le problème

Dans le domaine de JavaScript, un développeur a été confronté à un dilemme déroutant : son modèle d'expression régulière est cohérent a donné de faux résultats pour toute entrée. Après avoir partagé leur code avec des éditeurs en ligne, il a étonnamment fonctionné comme prévu. Un examen plus approfondi a révélé le coupable : une mauvaise gestion des barres obliques inverses.

À l'origine, le développeur définissait l'expression régulière comme une chaîne :

<code class="javascript">var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");</code>
Copier après la connexion
Copier après la connexion

Cependant, lors de la construction d'une expression régulière à partir d'une chaîne, il est Il est crucial de doubler chaque caractère de barre oblique inverse. En effet, l'analyseur interprète la chaîne de manière littérale et applique ses propres règles pour les barres obliques inverses, ce qui entraîne une expression modifiée qui diffère du modèle prévu.

En omettant le doublement de la barre oblique inverse, le modèle est devenu :

^(0[1-9]|1[0-2])/d{4}$
Copier après la connexion

Au lieu de cela, les barres obliques inverses doivent être doublées dans la chaîne :

<code class="javascript">var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");</code>
Copier après la connexion
Copier après la connexion

Cette modification garantit que l'analyseur interprète correctement le modèle, lui permettant de reconnaître le format souhaité pour les mois et les années.

De plus, il vaut la peine d'envisager d'utiliser directement la syntaxe d'expression régulière :

<code class="javascript">var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;</code>
Copier après la connexion

Cela élimine le besoin d'interpolation de chaîne et fournit une syntaxe plus intuitive pour exprimer le modèle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal