所以,我写了一个正则表达式来获取英国电话号码,它看起来像这样:
[(]*\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>
电话号码不会始终跟随<
。
答案 0 :(得分:3)
您可以利用正则表达式上的锚点来确保匹配的内容仅匹配精确,大小和全部匹配。在正则表达式的开头添加^
将指示正则表达式必须从字符串的开头开始,并且在正则表达式的末尾添加$
将指示正则表达式必须结束在字符串的末尾。
所以,试试这个:
^[(]*\d{3}[)]*\s*[.\-\s]*\d{3}[.\-\s]*\d{4}$