正则表达式10位phone号码抓取

Regular expression 10 digit phone number capture

我正在尝试匹配单词边界上的 10 位 phone 数字(以 2-9 开头)(即它们周围有白色 space。)有时上面的 phone 数字以 +1 或 1

为前缀

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

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

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

显示匹配项。但是它与第一行数字不匹配,它不应该与第二行和最后一行匹配:

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

谢谢

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

/(?:(?<= [+][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

这是一个更好的。

(?<!\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 $