Java 用于提取电话号码的正则表达式

Java 用于提取电话号码的正则表达式,java,regex,Java,Regex,我有以下要求: 编号(按顺序或以连字符或空格分隔) 中间可以有连字符-[可选] 中间可以有空格[可选] 可以有大括号(和大括号)[可选] 开始时可以有加+。[可选] 现在,我正在使用(^ |)[0-9.-+]{5,}(|$) 示例文本: 联系亚洲:(11)6530-6596-3242,+9145465465465(011)4420717696024+1212-904-2860 查找电话号码是一个相当困难的问题,因为不同地区的电话号码有不同的约定。我建议,谷歌为此开发了一个图书馆。该库包含一个方法

我有以下要求:

编号(按顺序或以连字符空格分隔)

中间可以有连字符-[可选]

中间可以有空格[可选]

可以有大括号(大括号)[可选]

开始时可以有加+。[可选]

现在,我正在使用(^ |)[0-9.-+]{5,}(|$)

示例文本:

联系亚洲:(11)6530-6596-3242,+9145465465465(011)4420717696024+1212-904-2860


查找电话号码是一个相当困难的问题,因为不同地区的电话号码有不同的约定。我建议,谷歌为此开发了一个图书馆。该库包含一个方法,用于查找电话号码并以解析方式返回

String text = "Call me at +1 425 882-8080 for details.";
RegionCode country = RegionCode.US;
PhoneNumberUtil util = PhoneNumberUtil.getInstance();

// Find the first phone number match:
PhoneNumberMatch m = util.findNumbers(text, country).iterator().next();

// rawString() contains the phone number as it appears in the text.
"+1 425 882-8080".equals(m.rawString());

// start() and end() define the range of the matched subsequence.
CharSequence subsequence = text.subSequence(m.start(), m.end());
"+1 425 882-8080".contentEquals(subsequence);

// number() returns the the same result as PhoneNumberUtil.parse()
// invoked on rawString().
util.parse(m.rawString(), country).equals(m.number());

这可能不会在所有情况下都起作用,但是您应该有更多的电话号码输入规则,但是您可以尝试一下:
[0-9\(\+]+[0-9\)\-]+[,]?

我可以推荐作为开发和测试正则表达式的“工作台”。还包含一个参考。你不应该发布真实姓名和电子邮件地址。。。