我需要一个正则表达式来验证电话号码。但我无法构建它。你能帮我把正则表达式给我吗?
电话号码结构应该是这样的:
- 第一个:可选+符号,可选空格,1-3位
- 然后:可选空间
- 然后:可选(,可选空格,1-3位,可选空格)
- 然后:可选空格或短划线(减号)"-">
- 然后:至少有5位数字用可选的单字符分隔符分隔。分隔符是破折号("-")或空格(")
- 字符串中的任何位置都是非法的:-(,)-、-"(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