首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用yup验证电话号码-- googlelip,yup,regex

用yup验证电话号码-- googlelip,yup,regex
EN

Stack Overflow用户
提问于 2022-05-18 11:33:09
回答 1查看 492关注 0票数 1

我一直在用yup验证一个电话号码。

我试过几个正则表达式

代码语言:javascript
运行
复制
const phoneSchema = yup
  .string()
  .matches(phoneRegExp, "Phone number is not valid")
  .required();

翻翻

代码语言:javascript
运行
复制
 /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/

LGenzelis

代码语言:javascript
运行
复制
/^((\+[1-9]{1,4}[ -]?)|(\([0-9]{2,3}\)[ -]?)|([0-9]{2,4})[ -]?)*?[0-9]{3,4}[ -]?[0-9]{3,4}$/

我试过两种libs yup和google-libphonenumber

但我不确定有效和无效的电话号码格式的矩阵是什么-- QA标记了初始验证,因为它允许在数字+++12345前面出现多个+符号--但是libs认为这是有效的。其中一个正则表达式似乎工作得很好,但随后它将允许在数字+234+32432的中间再加上一个+符号。

此外,我还担心如何用谷歌库( google )验证这个数字--如果它可能是任何类型的区域--他们的预期行为可能会输入英国/国际或美国的数字--这会是一种检测输入数字区域并以这种方式解决验证问题的情况吗?

代码语言:javascript
运行
复制
let region = "US";

  try {
    const number = phoneUtil.parseAndKeepRawInput(value, region);
    res = phoneUtil.isValidNumber(number).toString();
  } catch (e) {
    res = "false";
  }

//google电话https://codesandbox.io/s/google-phone-lib-demo-forked-k29kk8

//yup电话https://codesandbox.io/s/yup-phone-validation-forked-ixgnjj

//regex通过触发器https://codesandbox.io/s/regex-flipflop-phone-number-validation-forked-ggvel7

//regex ( LGenzelis https://codesandbox.io/s/regex-lgens-phone-number-validation-forked-szuy6o )

这是我的数字矩阵,但其中一些似乎通过验证过程。

代码语言:javascript
运行
复制
//valid numbers
Standard Telephone numbers
+61 1 2345 6789
+61 01 2345 6789 (zero entered is not required but enterd by user anyway)
01 2345 6789
01-2345-6789
(01) 2345 6789
(01) 2345-6789
1234 5678
1234-5678
12345678
Mobile Numbers
0123 456 789
0123456789
International Phone Numbers
US Format - +1 (012) 456 7890
US Virgin Islands (four digit international code) +1-340 123 4567

// invalid numbers
1234+5678
+++12345678
EN

回答 1

Stack Overflow用户

发布于 2022-05-25 05:16:41

如果您想在function前端实现这一点,可以使用react-phone-number-input npm包中的验证函数。

代码语言:javascript
运行
复制
 import { isValidPhoneNumber } from 'react-phone-number-input'

phone: Yup.string()
      .required("Phone number is required")
      .test("is-valid-phone", "Phone number is invalid", (value) => {
        return isValidPhoneNumber(value || '');
}),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72288413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档