我使用
^.*?(\d{3}\D?\d{3}\D?\d{4}).*$
并替换为 \1
或 $1
这样,除了电话号码之外,每行中的所有内容都将被删除。示例链接https://regex101.com/r/jK6eD8/3.
基本上它的工作原理如下:
第 1 行:这是垃圾文本,仅保留 818-333-2323
第2行:仅保留以下号码4445553333。
我需要帮助的是找到以下电话格式的匹配正则表达式模式,并删除其各自行中的所有其他内容,除了匹配的电话号码(如上面的链接)。格式如下。
07123452670
07812 345 931
07412 123466
00447912345188
+971557017442
+971 557 856 832
0414 934 993
所以基本上,我需要一个正则表达式来匹配 11 位数字。 (07123456270)
匹配5位数字,后跟空格,后跟3位数字,后跟空格,后跟3位数字。 (07812 345 931)
匹配5位数字,后跟空格,后跟6位数字(07412 123466)
匹配14位数字(12345678901234)
匹配+号后跟12位数字(+971557017442)
匹配 + 后跟 3 位数字、空格,后跟 3 位数字、空格、另外 3 位数字 (+971 557 856 832)
最后一位、4 位数字、空格、3 位数字、空格、3 位数字。 (0414 934 993)
此正则表达式满足要求:
^.*?(\+?(?:\d{11,14})|(?:\d{5}\s(?:\d{3}\s\d{3}|\d{6}))|(?:\d{3}(?:\s\d{3}){3})|(?:\d{4}\s\d{3}\s\d{3})).*$
正如您在这里看到的:https://regex101.com/r/lY3jW0/1
希望对你有帮助
如果您正在分析的文本不包含其他“长”数字,您可以只获取数字字符串,数字字符串之间带有可选的空格、句号和破折号。它可能看起来像这样:
^.*?(\d[\d .-]{9,13}\d).*$
比赛组必须包括
这对数字的组成并不那么严格,所以它可能不适合您的需求。但话又说回来,它可能;)
问候