Différences dans le comportement des expressions régulières
P粉996763314
P粉996763314 2024-04-01 13:33:29
0
1
386

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粉996763314
P粉996763314

répondre à tous(1)
P粉362071992

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}$/

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal