gpt4 book ai didi

java - 带有可选国家/地区代码的手机号码的正则表达式

转载 作者:行者123 更新时间:2023-11-30 02:57:57 28 4
gpt4 key购买 nike

实际上我在内部应用程序中使用它生成一个xml,其代码是用java编写的。但是在应用程序中 if ^(249)?1\d{8}$ 然后它转发到下一个操作,如果数字不在上面,则给用户错误的输入,即我不直接与java代码交互我想要一个用于手机号码验证的正则表达式。正则表达式模式应该是这样的:它必须接受 249 国家/地区代码(仅一次),后跟“1”(仅一次),后跟 8 位数字。国家代码应该是可选的。如果国家代码不存在,则只能接受以 1 开头的 9 位数字。

否定上述条件的正则表达式表示任何不以 249 开头且长度为 12 的手机号码(如果其长度为 9 并且不以 1 开头)。正则表达式应该接受像

这样的数字
249189372837 start with 249 followed by 1 and must of 12 digit length
249123476358
183526352 if start with 1 and must of 9 digit length (249 optional)

不应该接受

2431983645238   country code not 249
24924356383799 more then 12 digit including country code
249212236472 not 1 after 249
1232345678 more length then 9
12345323 less length then 9
456278399 if 249 is not there then mut start with 1 with length of 9

因此,我需要正则表达式来接受上述条件,并需要一个正则表达式来接受除上述接受条件之外的任何数字。

当以249开始时,我尝试了这个^(249)([1]{1})([0-9]{8})$然后(1 ) 然后是 8 位数字和 ^(1)([0-9]{8})$(当数字以 1 开头后跟 8 位数字时),但我需要一个正则表达式来满足这两种情况。

实际上我在内部应用程序中使用它生成一个xml,其代码是用java编写的。但是在应用程序中 if ^(249)?1\d{8}$ (由@rock321987回答)然后它转发到下一个操作,如果数字不高于正则表达式则给用户错误的输入,即我不直接与java代码交互

提前非常感谢您的任何帮助和建议。

最佳答案

这个正则表达式可以工作

^(249)?1\d{8}$

<强> Regex Demo

第二部分

(?=^1)(^\d{1,8}$|^\d{10,}$)|(?=^2491)(^\d{1,11}$|^\d{13,}$)
(?!^(2491|1))^(\d{9}|\d{12})$

Java 代码

Scanner x = new Scanner(System.in);
String pattern = "^(249)?1\\d{8}$";
Pattern r = Pattern.compile(pattern);
while (true) {
String line = x.nextLine();
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println("Found -> " + m.group());
} else {
System.out.println("Not Found");
}
}

<强> Ideone Demo

关于java - 带有可选国家/地区代码的手机号码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36736338/

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