Maison  >  Questions et réponses  >  le corps du texte

Différences dans le comportement des expressions régulières

J'essaie de créer une expression régulière pour faire correspondre les champs qui doivent contenir 9 chiffres

J'utilise l'expression régulière suivante

/^\d{9,9}$/

Maintenant, le problème c'est quand on le fait

/^\d{9,9}$/.test("123456789") //returns true

Cependant, lorsque j'essaie d'utiliser les correspondances de Yup en utilisant la même expression régulière (transmise dans myRegex ci-dessous)

'myField': yup
            .string()
            .nullable()
            .required('Field is required')
            .max(9, `Max length 9`)
            .matches(myRegex, {
                message: 'Field is invalid',
            }),

Pour la même entrée, je reçois un message invalide, c'est-à-dire 123456789

Je me demande simplement pourquoi cela se produit ?

Mise à jour : Oui, utilisez value.search(regex) , donc dans mon cas, il exécute "123456789".search(/^d{9,9}$/)

Vous ne savez pas si ce qui précède est le problème ?

P粉996763314P粉996763314172 Il y a quelques jours271

répondre à tous(1)je répondrai

  • P粉362071992

    P粉3620719922024-04-02 09:57:58

    Il semble que votre solution utilise la mauvaise expression régulière

    Des problèmes surviennent lorsque la méthode search() de Yup est utilisée avec des expressions régulières. La méthode search() renvoie l'index de la première correspondance et ne compte pas la chaîne complète.

    Puisque "123456789" contient 9 chiffres consécutifs, il satisfait l'expression régulière et la méthode search() renvoie l'index de la première occurrence, qui est 0. Puisque 0 est une valeur vraie, Yup l'interprète comme une correspondance échouée et renvoie un message non valide.

    Il s'agit d'une expression régulière que vous pouvez essayer d'utiliser /^d{9}$/

    répondre
    0
  • Annulerrépondre