在React中的RegEx中验证电话号码

问题描述

我正在尝试在React (044) 456-7890的regEx中验证这种电话号码。

在此处{@ 3}检查codesanBox

代码

const telRegExp = "(d{3})s*d{3}-d{4}";

let validateSchema = yup.object().shape({
  tel_no: yup.string().matches(telRegExp,"Telephone number is invalid")
});




  <InputMask
      mask="(999) 999 - 9999"
      onChange={handleChange}
      onBlur={handleBlur}
    >
     {() => (
       <TextField
         label="Telephone Number (Ex: (044) 878 - 3900)"
         name="tel_no"
         fullWidth
         variant="outlined"
         helperText={touched.tel_no ? errors.tel_no : ""}
         error={touched.tel_no && Boolean(errors.tel_no)}
       />
     )}
  </InputMask>

解决方法

要验证确切的数字格式#pragma,我建议:

(044) 456-7890

Demo

,
^\(\d{3}\)\s\d{3}-\d{4}$

这与给定格式完全匹配

https://regex101.com/r/HBvG3K/6

\( and \) - To escape () characters and match literally  
\s - space character. If there can be more or no spaces then add * next to \s
\d{} - decimal numbers(0-9) followed by quantifier.

let validateSchema = yup.object().shape({
  tel_no: yup
    .string()
    .matches(
      /^\(\d{3}\)\s\d{3}\s-\s\d{4}/g,"Telephone number is invalid"
    )
});
,

我想最好使用像https://github.com/catamphetamine/libphonenumber-js

这样的真实电话检查库