正则表达式找不到文本内的电话号码

时间:2018-06-22 15:43:50

标签: regex

我想使用正则表达式在文本中查找电话号码。我的电话号码公式是:

(?:(?:\+?\d*\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{3})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$

在一行中没有任何其他文本的情况下找到数字。但是,当它位于某些文本中间时,则找不到它。我该如何解决?

以下是带有示例的链接: regexr.com/3rf0l

1 个答案:

答案 0 :(得分:2)

这是因为您的正则表达式以$结尾,这是行/文档末尾的锚点(取决于多行设置)。

例如,在字符串1a2b中,正则表达式[a-z]$将匹配b但不匹配a,因为它不在字符串末尾,而{{ 1}}将同时匹配。

删除它,它将起作用:

[a-z]

Demo