Telefonnummer mit Ja bestätigen?

Lesezeit: 1 Minute

Evanss' Benutzer-Avatar
Evanss

Ich versuche, eine Telefonnummer mit Yup zu validieren:

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) überprüft, ob die Zahl 8 oder mehr beträgt. Also einfach eintreten 8 wird bestehen. Wie kann ich 8 Zeichen erforderlich machen? 1000 0000 würde passieren?

Filippofilips Benutzeravatar
Filippofilip

Hallo, im Moment löse ich das gleiche Problem wie Sie und habe eine mögliche Lösung gefunden.

Überprüfen Sie die Telefonnummer mit einer Zeichenfolge, die mit Regex übereinstimmt

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

Sie können nach verschiedenen Regex-Ausdrücken suchen und diese validieren. Ich habe Regex aus diesem Artikel verwendet https://www.sitepoint.com/community/t/phone-number-regular-expression-validation/2204

  • matches(” “) funktioniert bei mir, es gibt eine Warnung als Mögliche Ablehnung eines nicht behandelten Versprechens (ID: 0): TypeError: Die Eigenschaft „Länge“ von undefiniert kann nicht gelesen werden in React-Native. Bitte hilf mir

    – Sirisha

    3. Januar 2019 um 11:55


  • Sirisha, ich denke, das liegt daran, dass deine Variable keine Zeichenfolge ist. Initialisieren Sie Ihre Variable als leere Zeichenfolge und hören Sie dann das onChanged-Ereignis in TextInput ab.

    – Filippofilip

    5. Januar 2019 um 16:54


  • Warum \\? Hat bei mir erst funktioniert, nachdem ich überflüssige Escapes entfernt habe.

    – OlehZiniak

    22. Januar 2020 um 11:45 Uhr

  • /^((\+[1-9]{1,4}[ -]?)|(\([0-9]{2,3}\)[ -]?)|([0-9]{2,4})[ -]?)*?[0-9]{3,4}[ -]?[0-9]{3,4}$/ hat bei mir am besten funktioniert. @filippofilip Ihr ​​Ausdruck entspricht etwas wie +32———-1111111

    – LGenzelis

    25. Juni 2020 um 21:58


  • @LGenzelis Ich habe Ihren regulären Ausdruck ausprobiert – aber dieser erlaubte Zahlen mit mehreren + in der Mitte +32+232232232

    – Die alte Grafschaft

    17. Mai 2022 um 16:23

Benutzeravatar von abhisekp
abhisekp

>. Aktualisieren .<

http://yup-phone.js.org/

Ich habe eine erstellt yup-phone Modul, das verwendet google-libphonenumber Dies ermöglicht genaue Validierungsprüfungen und kann direkt von Github aus installiert werden

npm install --save yup yup-phone.

Überprüfen Verwendung

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


Aus Einfacher Reaktionsvalidator,

Der reguläre Ausdruck für die Telefonnummernvalidierung lautet

/^(\+?\d{0,4})?\s?-?\s?(\(?\d{3}\)?)\s?-?\s?(\(?\d{3}\)?)\s?-?\s?(\(?\d{4}\)?)?$/

Beispiel

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

  • Sofern ich unterwegs nichts übersehen habe, konnte ich die Validierung für ein leeres Feld nicht bestehen. Das heißt, ich möchte nur validieren, ob ein Wert vorhanden ist.

    – David W.

    18. September 2021 um 22:16 Uhr

  • Ich habe dies ursprünglich positiv bewertet. Allerdings ist die Paketgröße größer als meine gesamte Website. Verwenden Sie es nicht im Frontend

    – Will Squire

    4. April 2022 um 21:01 Uhr

  • Ich habe versucht, hier Yup-Phone zu verwenden – codesandbox.io/s/yup-phone-validation-forked-ixgnjj – aber es werden Zahlen mit ++ am Anfang erlaubt? — “++33343335678”

    – Die alte Grafschaft

    18. Mai 2022 um 10:39 Uhr

  • Sogar Google-Lib Phone erlaubte dies – codesandbox.io/s/google-phone-lib-demo-forked-k29kk8 „+++33343335678“

    – Die alte Grafschaft

    18. Mai 2022 um 10:41 Uhr

Sirishas Benutzeravatar
Sirisha

Probieren Sie es aus, es könnte für Sie hilfreich sein.

mobile: Yup.string().matches(/^[6-9]\d{9}$/, {message: "Please enter valid number.", excludeEmptyString: false})

  • Telefonnummern, die mit den Ziffern 1–5 beginnen, würden nicht validiert

    – Rahil Ahmad

    5. April 2019 um 4:14

  • Ja @RahilAhmad, normalerweise beginnen Mobiltelefonnummern in Indien entweder mit 6 oder 7 oder 8 oder 9, daher validiert Regex nur diese Nummern.

    – Sirisha

    8. April 2019 um 5:09

  • Es erlaubt Zahlen, die mit 0 beginnen

    – Lalitesh Upadhyaya

    29. April 2021 um 5:05 Uhr

Vipul Singhs Benutzeravatar
Vipul Singh

const phoneRegExp = /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/


phone_number: Yup.string()
  .required("required")
  .matches(phoneRegExp, 'Phone number is not valid')
  .min(10, "too short")
  .max(10, "too long"),

Das funktioniert bei mir am besten … Sie können Ihre eigene Länge festlegen … ich wollte nur 10 Ziffern, nicht weniger oder mehr

Nur eine kleine Zusammenarbeit. In meinem Fall möchte ich nicht validieren, ob die Eingabe leer ist (wenn dies nicht erforderlich ist). Vielen Dank an alle für eure Beispiele!

yup.addMethod(yup.string, "phone", function(messageError="Phone number is not valid") {
    const phoneRegExp = /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/
    return this.test('phone', messageError, value => {
      if (value && value.length > 0) {
        return phoneRegExp.test(value)
      }
      return true
    })
})

  • Ich mache etwas Ähnliches mit .transform(). Ist es angemessener, .test() zu verwenden?

    – Wolfhoundjesse

    8. Okt. 2020 um 14:58

Calvins Benutzeravatar
Calvin

Ich habe einen ähnlichen Anwendungsfall und hier ist meine Lösung:

// Regex source: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s02.html

const phoneRegex = RegExp(
  /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/
);

const schema = yup.object().shape({
  phone: yup.string().matches(phoneRegex, "Invalid phone").required("Phone is required")
});

  • Ich mache etwas Ähnliches mit .transform(). Ist es angemessener, .test() zu verwenden?

    – Wolfhoundjesse

    8. Okt. 2020 um 14:58

Chris Sandviks Benutzeravatar
Chris Sandvik

Ich habe dafür ein neues Paket mit dem Namen erstellt Yup-Phone-Lite. Ich hatte das ursprüngliche Yup-Phone-Paket verwendet, aber es verwendet die massive Google-Libphone-Nummer, also habe ich es durch einen kleineren Fork ersetzt.

1453160cookie-checkTelefonnummer mit Ja bestätigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy