gpt4 book ai didi

java - 正则表达式过滤联系人号码

转载 作者:行者123 更新时间:2023-12-02 03:26:14 25 4
gpt4 key购买 nike

我有一个电话号码列表,但想根据某些条件删除其中一些。我正在尝试在 ETL 中进行设置。

假设这是联系号码列表:

897-54-6212
985566655
568-00-9977
000-56-8795
875-95-9999
&^*-(&-#$@)
111-85-4568
222-56-6542
333-56-4589
444-48-8978
555-48-8978
666-58-5648
777-58-5647
888-86-8978
456-33-5685
485-44-4568
465-55-8523
485-66-7824
468-77-5948
854-88-2358
785-78-1111
588-64-2222
078-05-1120
455-56-(0000)

我不想要类似的数字,如果它包含:

  1. 前三位数字不应包含 000 或 666 或 900 或 999(例如 666-77-5948 应被拒绝)

  2. 如果号码之间包含 00(例如 945-00-8796),也应被拒绝

  3. 如果数字包含任何类型的特殊字符,例如@!#$%^()

这是否可能是某种正则表达式,以便我可以过滤这些记录。我尝试过使用子字符串函数,但没有按预期工作。

应拒绝这些号码:

985566655
568-00-9977
000-56-8795
&^*-(&-#$@)
666-58-5648
455-56-(0000)

有人可以帮忙吗?

最佳答案

可以使用仅指定数字和破折号的正则表达式来排除特殊字符:

^\d{3}-\d{2}-\d{4}$

如果您添加负面回顾以将某些号码列入黑名单,则结果将如下所示:

^\d{3}(?<!000|666|999|900)-\d{2}(?<!00)-\d{4}$

Regex101 Demo

由于您要将其与列表进行匹配,因此请确保使用 Pattern 预编译正则表达式。目的。不要使用String#matches()循环中。

import java.util.regex.Pattern;
...
Pattern phone = Pattern.compile("^\\d{3}(?<!000|666|999|900)-\\d{2}(?<!00)-\\d{4}$");
...
boolean isValid = phone.matcher(inputString).matches();

关于java - 正则表达式过滤联系人号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38841603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com