web-dev-qa-db-fra.com

Valider le numéro de téléphone avec Yup?

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?

11
Evanss

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

17
filippofilip

Essayez ceci, cela pourrait vous être utile.

mobile: Yup.string (). matches (/ ^ [6-9]\d {9} $ /, {message: "Veuillez entrer un nombre valide.", excludeEmptyString: false})

3
Sirisha

De Simple React Validateur ,

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}\)?)?$/

Exemple

// 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)
  );
});
2
abhisekp