正则表达式强制vs可选

时间:2016-11-18 01:33:22

标签: javascript regex

我有以下正则表达式:

/[0-9\s-.]{8,10}/

我的目的是检测用户是否在描述区域输入了可能是电话号码(澳大利亚人)的任何内容,并建议他们不要这样做。它可以很好地匹配可能在其中包含空格点或连字符的数字。

不幸的是,它也会匹配" -----------"等内容。如何制作匹配所需的数字,其他类型可选?

1 个答案:

答案 0 :(得分:0)

你几乎得到了它。你真正想要的是:

(?:\(\d\d?\)[\s-.])?\d{4}[\s-.]\d{4}

Demo on Regex101

稍微分解一下:

  • (?:\(\d\d?\)[\s-.])?是最令人生畏的部分,实际上只是用括号中的可选区域代码描述,后跟空白字符,短划线或句点中的任何一个。
  • \d{4}描述了其余数字的两个部分之一。
  • [\s-.]字符类,(在本例中)将匹配空白字符,短划线或句点。