web-dev-qa-db-ja.com

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_と入力するだけで合格します。 _1000 0000_が渡されるように8文字を必要にするにはどうすればよいですか?

11
Evanss

こんにちは今、私はあなたと同じ問題を解決しています、私は可能な解決策を見つけました。

正規表現に一致する文字列で電話番号を検証する

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')

さまざまな正規表現を検索して検証できます。この記事の正規表現を使用しました https://www.sitepoint.com/community/t/phone-number-regular-expression-validation/2204

17
filippofilip

これを試してみてください、あなたにとって役に立つかもしれません。

モバイル:Yup.string()。matches(/ ^ [6-9]\d {9} $ /、{メッセージ: "有効な番号を入力してください。"、excludeEmptyString:false})

3
Sirisha

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