正则表达式PHP电话号码


Regular Expression PHP Phone Number

我正在制作一个正则表达式,它将从PHP表单中读取电话号码。它需要读取以下任何格式的电话号码:

623-456-7890
456-7890
6234567890
4567890
623.456.7890
456.7890
623 456 7890
456 7890

我在这一点上的表述如下:

(([0-9]{3}){0,1})(('W){0,1})([0-9]{3})(('W){0,1})([0-9]{4})

它基本有效,唯一不读的电话号码是上面列表(6234567890)中的第三个。我需要添加或更改什么才能读取该电话号码?

这要好得多:

([0-9]{3})?'W*([0-9]{3})'W*([0-9]{4})

由于交换等原因,真实的电话号码要复杂得多。这将匹配数字、句点和连字符,并非所有这些都是必需的,但它也不会检查有效的电话号码。

([0-9]{3})?[ .-]?([0-9]{3})[ .-]?([0-9]{4})

/(?:['(]?'d{3}[')'.'- ]?)?'d{3}['.'- ]?'d{4}/

在实践中:http://regex101.com/r/pL3dB0/3