Java 用于提取电话号码的正则表达式
我有以下要求: 编号(按顺序或以连字符或空格分隔) 中间可以有连字符-[可选] 中间可以有空格[可选] 可以有大括号(和大括号)[可选] 开始时可以有加+。[可选] 现在,我正在使用(^ |)[0-9.-+]{5,}(|$) 示例文本: 联系亚洲:(11)6530-6596-3242,+9145465465465(011)4420717696024+1212-904-2860Java 用于提取电话号码的正则表达式,java,regex,Java,Regex,我有以下要求: 编号(按顺序或以连字符或空格分隔) 中间可以有连字符-[可选] 中间可以有空格[可选] 可以有大括号(和大括号)[可选] 开始时可以有加+。[可选] 现在,我正在使用(^ |)[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\)\-]+[,]?
我可以推荐作为开发和测试正则表达式的“工作台”。还包含一个参考。你不应该发布真实姓名和电子邮件地址。。。