Regex 用于验证特定序列中电话号码的正则表达式
嗨,我正在尝试验证代码中的电话号码。验证结果是,如果该数字在以下任意序列中,则该数字无效-Regex 用于验证特定序列中电话号码的正则表达式,regex,Regex,嗨,我正在尝试验证代码中的电话号码。验证结果是,如果该数字在以下任意序列中,则该数字无效- 111-111-1111 333-333-3333 444-444-4444 123-123-1234 123-456-7890 这个序列中的任何数字xxx xxx xxxx xxx xxxx除了上面的数字都是有效的,不应该在验证中被捕获我已经用这个正则表达式来验证前三个序列 ^([0-9])\1{2}\1{3}\1{4}$ 任何潜在客户都会大有裨益。一个简单的解决方案是维护一个受限系列/号码列表,然
111-111-1111
333-333-3333
444-444-4444
123-123-1234
123-456-7890
这个序列中的任何数字xxx xxx xxxx xxx xxxx除了上面的数字都是有效的,不应该在验证中被捕获我已经用这个正则表达式来验证前三个序列
^([0-9])\1{2}\1{3}\1{4}$
任何潜在客户都会大有裨益。一个简单的解决方案是维护一个受限系列/号码列表,然后检查一个电话号码是否属于该列表 按如下方式操作:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> restrictedList = List.of("111-111-1111", "333-333-3333", "444-444-4444", "123-123-1234",
"123-456-7890");
String[] testNumbers = { "444-444-4544", "444-444-4444", "121-111-1111", "333-343-3333", "123-123-1234",
"123-456-7890", "123-465-7890", "213-123-1234", "1234567890", "111-111-1111", "a1b2c3d4e5",
"333-333-3333", "223-334-4445", "2134-12-4321", "100-200-3000", "011-243-7234" };
for (String number : testNumbers) {
if (number.matches("[1-9]{1}[0-9]{2}-[0-9]{3}-[0-9]{4}") && !restrictedList.contains(number)) {
System.out.println(number + " is valid.");
} else {
System.out.println(number + " is invalid.");
}
}
}
}
注意:我使用了[1-9]{1}[0-9]{2}-[0-9]{3}-[0-9]{4}作为电话号码的格式,假设第一个数字不能是0。您可能希望在最后2个数字中使用Integer.parse和其他内容-regex不适合sequencesmindSet之类的内容-有更新吗?
444-444-4544 is valid.
444-444-4444 is invalid.
121-111-1111 is valid.
333-343-3333 is valid.
123-123-1234 is invalid.
123-456-7890 is invalid.
123-465-7890 is valid.
213-123-1234 is valid.
1234567890 is invalid.
111-111-1111 is invalid.
a1b2c3d4e5 is invalid.
333-333-3333 is invalid.
223-334-4445 is valid.
2134-12-4321 is invalid.
100-200-3000 is valid.
011-243-7234 is invalid.