用于电话号码验证的Javascript RegEx构建



我需要一个正则表达式来验证电话号码。但我无法构建它。你能帮我把正则表达式给我吗?

电话号码结构应该是这样的:

  1. 第一个:可选+符号,可选空格,1-3位
  2. 然后:可选空间
  3. 然后:可选(,可选空格,1-3位,可选空格)
  4. 然后:可选空格或短划线(减号)"-">
  5. 然后:至少有5位数字用可选的单字符分隔符分隔。分隔符是破折号("-")或空格(")
  6. 字符串中的任何位置都是非法的:-()--"(2个空格)

这与您的规范非常接近:

/^+?s?[0-9]{1,3}s?([0-9]{1,3})?[s-]?([0-9][s-]){5}([0-9][s-])*$/

注意:

  • 这是未经测试的,而且我对regex不是特别熟练,所以我可能错过了一些东西,但这应该会让你走上正轨
  • 你要求的格式对于一个电话号码来说似乎极不寻常,但我无论如何都试图实现你要求的形式
  • 以上表达式至少满足了您的一个标准。(在第二组数字之后,你要求允许后面有一个空格和一个连字符,但我的表达式只允许其中一个。我不确定如何准确地解决这个问题,但我希望你能比以前更接近一个有效的解决方案。)

以下是对单个字符的解释:

  • ^和$字符分别表示字段的开始和结束
  • \s表示空白字符(也可以是制表符或回车符等字符)
  • \d是任意数字
  • +表示"+"。(此处需要"\",因为"+"是一个特殊字符。)

。。。和"修改"字符和组:

  • 问号(?)使其前面的事物可选(必须为零或一次出现)
  • 星号(*)使前面的内容可选(可以是任意次数)
  • 括号可以创建组,因此当您看到问号时,例如,在右括号之后,括号之间的所有内容都是可选的
  • 花括号意味着重复,所以{1,3}意味着它可以出现1-3次之前的事情
  • 方括号提供了选择,所以[\s-]表示空白字符或连字符

几分钟后,您将更好地了解regexhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

最新更新