Java中的RegEx电话号码
我有一些类型的电话号码是123-1234567和(321)1234567,然后我将电话号码设置为:Java中的RegEx电话号码,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有一些类型的电话号码是123-1234567和(321)1234567,然后我将电话号码设置为: 123-1234567, Area Code = 123, Number = 1234567 (321) 1234567, Area Code = 321, Number = 1234567 我使用模式()(\\d+)(\\d+),但结果与123-1234567的预期不符 我使用的程序代码 import java.util.regex.Matcher; import java.util
123-1234567,
Area Code = 123,
Number = 1234567
(321) 1234567,
Area Code = 321,
Number = 1234567
我使用模式()(\\d+)(\\d+)
,但结果与123-1234567的预期不符
我使用的程序代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
private static Pattern telp = Pattern.compile("(.)(\\d+)(.)(\\d+)");
public static void testNomor(String s){
Matcher m = telp.matcher(s);
if (m.matches()) {
System.out.println(s + "\nArea Code = " +m.group(2)+"\nPhone Number = " + m.group(4) + "\n");
} else {
System.out.println(s+" phone number is invalid");
}
}
public static void main(String[] args) {
testNomor("(321)1234567");
testNomor("123-1234567");
testNomor("(1433)-123 456");
}
}
对我来说,在你的例子中,你想要匹配什么并不100%清楚,
我对美国的电话号码不太熟悉,
但你可以给出模式
\\((\\d+)\\)-?(\\d+)\\D*?(\\d*)
及
一枪,
i、 e:
这给了我:
(321)1234567
Area Code = 321
Phone Number = 1234567
123-1234567
Area Code = 123
Phone Number = 1234567
(1433)-123 456
Area Code = 1433
Phone Number = 123456
www上可能有更复杂的regex,
这比我在这里更能验证电话号码。注意,我更新了
我的帖子的原因在下面的评论中提到
当然,您可以将这两种模式与or运算符|
组合,并使用正向向前/向后查找,然后将if
和else if
组合到一个表达式中。第二,删除为说明目的而引入的代码重复 哇。你完全没有做任何研究,是吗?我花了15秒的时间向谷歌索要电话号码正则表达式,并取得了好几次成功。谢谢你。你必须小心我给你的模式,这并不能确保你在所有情况下都有匹配的括号。不过,您必须稍微修改一下模式。使用两种不同的模式并尝试分别匹配它们也没有错。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
private static Pattern telp1 = Pattern.compile("\\((\\d+)\\)-?(\\d+)\\D*?(\\d*)");
private static Pattern telp2 = Pattern.compile("(\\d+)-?(\\d+)\\D*?(\\d*)");
public static void testNomor(String s){
Matcher m = telp1.matcher(s);
Matcher m2 = telp2.matcher(s);
if (m.matches()) {
System.out.println(s + "\nArea Code = " +m.group(1)+"\nPhone Number = " + m.group(2) + m.group(3) + "\n");
} else if (m2.matches()) {
System.out.println(s + "\nArea Code = " +m2.group(1)+"\nPhone Number = " + m2.group(2) + m2.group(3) + "\n");
} else {
System.out.println(s+" phone number is invalid");
}
}
(321)1234567
Area Code = 321
Phone Number = 1234567
123-1234567
Area Code = 123
Phone Number = 1234567
(1433)-123 456
Area Code = 1433
Phone Number = 123456