正则表达式10位数电话号码捕获

时间:2015-03-04 14:52:18

标签: regex phone-number

我正在尝试匹配字边界上的10位数电话号码(以2-9开头)(即周围有空白区域。)有时上述电话号码的前缀为+1或1

我希望它仍然匹配后面的10位数电话号码,但丢弃+1或1文本中可以有多个电话号码。 这是我的正则表达式

\b(([+]?[1-9]{1})?([2-9][0-9]{9}))\b

https://regex101.com/r/yS1vM4/1

显示匹配项。但是它与第一行数字不匹配,并且在第2行和最后一行不匹配:

abcd +12125551212 xyz should match starting at 212 
abcd +2125551212 xyz should NOT match (+ sign only)
abcd 2125551212 xyz  match OK!
abcd+12125551212 xyz should NOT match (no white space at start)
abcd 12125551212 xyz should match starting at 212

谢谢

2 个答案:

答案 0 :(得分:1)

您可以将此正则表达式用于示例:

/(?:(?<= [+][1-9])|(?<= [1-9])|(?<= ))([2-9][0-9]{9})\b/gi

RegEx Demo

或者这个正则表达式并使用匹配的组#1:

/\s([+]?[1-9])?([2-9][0-9]{9})\b/gi

RegEx Demo 2

答案 1 :(得分:0)

这是一个更好的。

(?<!\S)(?:\+?1)?([2-9]\d{9})(?!\S) 

格式化(this):

 (?<! \S )            # Look behind, whitespace or ^ 
 (?: \+? 1 )?         # Optional +1
 ( [2-9] \d{9} )      # (1), ten digit phone
 (?! \S )             # Look ahead, whitespace or $