É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 :
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
Cependant, lors de la construction d'une expression régulière à partir d'une chaîne, 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}$
Au lieu de cela, les barres obliques inverses doivent être doublées dans la chaîne :
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
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 la syntaxe des expressions régulières. directement :
var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;
Cela élimine la nécessité d'une interpolation de chaîne et fournit une syntaxe plus intuitive pour exprimer le modèle.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3