gpt4 book ai didi

java - java 中可选 - 手机号码的正则表达式

转载 作者:行者123 更新时间:2023-12-02 10:19:07 26 4
gpt4 key购买 nike

我正在学习 Java 正则表达式,在下面的程序中我期待列表[4]项目 "Its a valid number : +11234562222" 但它打印为无效。我在正则表达式 (\\+\\d{1,2}-?) 中将 - 设为可选。谁能指出这段代码中缺少什么?

电流输出

> Its a valid number : 123-456-2222
Its a valid number : +1-123-456-2222
Its a valid number : 1234562222
Its a invalid number : 12345622226
Its a invalid number : +11234562222

预期输出

> Its a valid number : 123-456-2222
Its a valid number : +1-123-456-2222
Its a valid number : 1234562222
Its a invalid number : 12345622226
Its a valid number : +11234562222

public static void vali_mobile_num(){

String mob_pat = "^(\\+\\d{1,2}-?)?+(\\d{3}-?){2}+\\d{4}$";
List list = new ArrayList();

list.add( "123-456-2222");
list.add("+1-123-456-2222");
list.add("1234562222");
list.add("12345622226");
list.add("+11234562222");

Pattern p = Pattern.compile(mob_pat);

list.forEach(x -> {
Matcher m = p.matcher(x.toString());
if(m.find()){
System.out.println("Its a valid number : "+m.group());
}
else
System.out.println("Its a invalid number : "+ x);

});

}

最佳答案

你的正则表达式几乎没问题,除了你有一个额外的 + 我不明白为什么。只需删除它就可以了。

^(\\+\\d{1,2}-?)?+(\\d{3}-?){2}+\\d{4}$
^ is not needed

试试这个 Java 代码,

List<String> list = Arrays.asList("123-456-2222","+1-123-456-2222","1234562222","12345622226","+11234562222");
Pattern p = Pattern.compile("^(\\+\\d{1,2}-?)?(\\d{3}-?){2}+\\d{4}$");

list.forEach(x -> {
Matcher m = p.matcher(x);
if(m.matches()) {
System.out.println(x + " is Valid");
} else {
System.out.println(x + " is Invalid");
}
});

打印,

123-456-2222 is Valid
+1-123-456-2222 is Valid
1234562222 is Valid
12345622226 is Invalid
+11234562222 is Valid

关于java - java 中可选 - 手机号码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54464720/

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