我试图在各种文件中找到所有的电话号码,包括JSON和TXT。
匹配应基于是否有10个或11个数字字符(0-012-345-6789)或(012-345-6789)来进行,不能多也不能少。电话号码通常由文本包围,但有时由空格和制表符包围(请参阅以下示例)。电话号码有时还包括连字符“-”和括号“()”来描述号码。
abc0123456789def <- match
abc10123456789def <- match
abc10123456789def <- match
abc101234567899def <- no match (12 numbers)
abc101234567def <- no match (9 numbers)
abc 0123456789 def <- match
abc 10123456789 def <- match
abc1(012)345-6789def <- match
abc1-012-345-6789def <- match
abc(012)345-6789def <- match
abc012-345-6789def <- match
abc 1(012)345-6789 def <- match
非常感谢您的帮助!
1条答案
按热度按时间8iwquhpp1#
如果我没记错grep,那么:
(?:^|(?<=\D))
-我后面是行的开头或非数字字符\d?
-可选前导数字(?:
-启动非捕获组\(\d{3}\)
-格式相当于(555)
|
-或-?\d{3}
-格式等同于-555
,连字符是可选的)
-结束非捕获组-?\d{3}-?\d{4}
-格式等同于-555-5555
,带有可选连字符(?=\D|$)
-我前面是一个非数字字符或行尾这里是PHP https://regex101.com/r/Gdeiq7/1