J'essaie de valider un numéro de téléphone avec Yup:
phone: Yup.number()
.typeError("That doesn't look like a phone number")
.positive("A phone number can't start with a minus")
.integer("A phone number can't include a decimal point")
.min(8)
.required('A phone number is required'),
.min(8)
valide que le nombre est 8 ou plus. Il suffit donc de saisir 8
. Comment puis-je créer 8 caractères requis pour que 1000 0000
Passe?
Bonjour, je suis en train de résoudre le même problème que vous et j'ai trouvé une solution possible.
Validez le numéro de téléphone avec une chaîne qui correspond à Regex
const phoneRegExp = /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/
phoneNumber: Yup.string().matches(phoneRegExp, 'Phone number is not valid')
Vous pouvez rechercher différentes expressions Regex et les valider. J'ai utilisé Regex de cet article https://www.sitepoint.com/community/t/phone-number-normal- expression-validation/2204
Essayez ceci, cela pourrait vous être utile.
mobile: Yup.string (). matches (/ ^ [6-9]\d {9} $ /, {message: "Veuillez entrer un nombre valide.", excludeEmptyString: false})
La regex pour la validation du numéro de téléphone est
/^(\+?\d{0,4})?\s?-?\s?(\(?\d{3}\)?)\s?-?\s?(\(?\d{3}\)?)\s?-?\s?(\(?\d{4}\)?)?$/
// index.js
const yup = require('yup');
const { rePhoneNumber } = require('./yup-phone')
const schema = yup.string().phone()
const phone = '+911234567890';
console.log('Is Valid? ', rePhoneNumber.test(phone)); // Is Valid? true
schema.validateSync(phone);
// yup-phone.js
const yup = require('yup');
const rePhoneNumber = /^(\+?\d{0,4})?\s?-?\s?(\(?\d{3}\)?)\s?-?\s?(\(?\d{3}\)?)\s?-?\s?(\(?\d{4}\)?)?$/;
module.exports.rePhoneNumber = rePhoneNumber
yup.addMethod(yup.string, "phone", function() {
return this.test("phone", "Phone number is not valid", value =>
rePhoneNumber.test(value)
);
});