Php 将电话号码扩展添加到phonenumber正则表达式

Php 将电话号码扩展添加到phonenumber正则表达式,php,regex,Php,Regex,这是我当前的正则表达式: /\b\d{3}[-.]?\d{3}[-.]?\d{4}?\b/gm 它匹配: 444-555-1234 246.555.8888 1235554567 我现在需要的是可能性,如果可用: 1234567890x1234 444-555-1234x1234 246.555.8888x1234 任何帮助都将不胜感激 另外,有人能解释一下\b的用途,以及如果字符串中存在[-.]如何成为可选的使用(?:\(\d{3}\)\s*|(?=[\d.-]{10,20})\b\d

这是我当前的正则表达式:

/\b\d{3}[-.]?\d{3}[-.]?\d{4}?\b/gm

它匹配:

  • 444-555-1234
  • 246.555.8888
  • 1235554567
我现在需要的是可能性,如果可用

  • 1234567890x1234
  • 444-555-1234x1234
  • 246.555.8888x1234
任何帮助都将不胜感激


另外,有人能解释一下
\b
的用途,以及如果字符串中存在
[-.]
如何成为可选的
使用
(?:\(\d{3}\)\s*|(?=[\d.-]{10,20})\b\d{3}[-.]\d{3}[-.]\d{4}(x\d{4})regex
。您的情况由
(?:x\d{4})
=
x
和4位数字(如果可用)表示。根据您的评论,我在电话号码开头的括号中添加了三位数字的替代项。

男士们,今天这些电话号码是怎么回事?你就像第三个或第四个用电话号码问关于regex的问题@Rizier123可能是它的国际电话号码regex day1。
1234567890x1234
是否比所有其他数字少1个?2.试试这个
\d{3}[-.]?\d{3}[-.]?\d{4}?(x\d{4})?
3。当你不知道它的作用时,为什么要使用
\b
?我使用一个示例regex只是想理解它\b是一个单词boundry,\b你\b将匹配字符串中的“你”和一个问号?表示可选,它匹配0或更多时间。[foo]?foo是可选的,这就是我正在使用的:/(?=[\d-.]{10,20})\b\d{3}[-.]?\d{3}[-.]?\d{4}(x\d{4})?\b/gm。它工作得很好。我想修改它以捕获:(111)555-5555x1234。你能帮我解决这个问题吗?我接受你的回答?这个正则表达式在regexpal.com上正常工作:
(?:\(\d{3}\)\s*|\d{3}[-.]?)\d{3}[-.]?\d{4}(x\d{4})?
。主要的一点是可选的
(?:\(\d{3}\)\s*\d{3}[-.]?)
。我必须删除
\b
s和lookahead以使正则表达式开始捕获。看起来这一个更接近你的-
(?:\(\d{3}\)\s*|(?=[\d.-]{10,20})\b\d{3}[-.]\d{3}[-.]\d{4}\b
-也可以工作。我还在这里修复了lookahead,它包含一个错误定义的字符类[\d-。]。连字符在这里表示介于数字和句点之间的字符范围。要使其仅与数字、连字符和句点匹配,必须将连字符转义或放在开头或结尾,例如[\d.-]。