我正在尝试匹配字边界上的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
谢谢
答案 0 :(得分:1)
您可以将此正则表达式用于示例:
/(?:(?<= [+][1-9])|(?<= [1-9])|(?<= ))([2-9][0-9]{9})\b/gi
或者这个正则表达式并使用匹配的组#1:
/\s([+]?[1-9])?([2-9][0-9]{9})\b/gi
答案 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 $