Подтвердить номер телефона с помощью Yup?

Я пытаюсь проверить номер телефона с помощью 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) подтверждает, что число равно 8 или более. Так простое прохождение 8 пройдет. Как я могу сделать 8 символов, чтобы пройти 1000 0000?

Ответы

Ответ 1

Привет, сейчас я решаю ту же проблему, что и вы, и я нашел возможное решение.

Подтвердите номер телефона со строкой, которая соответствует 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')

Вы можете искать различные выражения Regex и проверять его. Я использовал Regex из этой статьи https://www.sitepoint.com/community/t/phone-number-regular-expression-validation/2204

Ответ 2

Попробуйте, это может быть полезно для вас.

mobile: Yup.string(). совпадает (/^ [6-9]\d {9} $/, {сообщение: "Пожалуйста, введите правильный номер.", excludeEmptyString: false})

Ответ 3

Из Simple React Validator,

Регламент проверки номера телефона:

/^(\+?\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)
  );
});

. Обновить. & Lt;

Я создал yup-phone модуль, который использует google-libphonenumber, который дает точные проверки правильности и может быть установлен непосредственно из github

npm install --save abhisekp/yup-phone.

Проверьте использование

const Yup = require('yup');
require('yup-phone');

// validate any phone number (defaults to India for country)
const phoneSchema = Yup.string().phone().required();
phoneSchema.isValid('9876543210'); // → true