正则表达式 - 获取仅10或11位数的数字

时间:2017-06-19 17:27:59

标签: php regex search

所以,我写了一个正则表达式来获取英国电话号码,它看起来像这样:

[(]*\d{3}[)]*\s*[.\-\s]*\d{3}[.\-\s]*\d{4}

它可以完美地捕获电话号码,但如果我提供的列表中包含的数字长度超过11位etc: 01234567891011121314,则会获取该号码的前11位数字。

我想完全排除这个数字,而不是取前11位。

如何修改表达式以实现此目的?

由于

编辑: 对于上下文: 正则表达式用于从网站源代码中获取电话号码,因此数字可以被任何字符包围,我只想捕获那些没有数字的数字(使它们超过11位)

编辑2: 以下是透视的一些源代码:

<a class="social" href="https://www.facebook.com/pages/x-Ltd/194636607281565" target="_blank" title="Like us on facebook">
    <i class="icon icon-facebook"></i>
</a>
<p>123 Sesame Street</p>
<p>Brooklyn, NY</p>
<p>Contact Us: 0123 456 7890</p>

电话号码不会始终跟随<

1 个答案:

答案 0 :(得分:3)

您可以利用正则表达式上的锚点来确保匹配的内容仅匹配精确,大小和全部匹配。在正则表达式的开头添加^将指示正则表达式必须从字符串的开头开始,并且在正则表达式的末尾添加$将指示正则表达式必须结束在字符串的末尾。

所以,试试这个:

^[(]*\d{3}[)]*\s*[.\-\s]*\d{3}[.\-\s]*\d{4}$