经常用到的提取手机、电话、Email联系方式的几个java正则表达式

  [b] 经常用到的提取手机、电话、Email联系方式的几个java正则表达式 [/b][b]收藏 [/b]
  以前网页信息提取的时候,其中有很多时候要提取网页文字中的一些联系方式,主要就是手机,电话和email
  这几个正则表达式写到这里,算是一个笔记吧,分享给需要的朋友,不一定通用,但可以解决大部分问题
  1,正则 手机:\\D0?(1\\d{10})(\\D|$) 电话:\\D((\\+86-)?((0\\d{2,3}\\-)?\\d{7,8}))(\\D|$) Email:\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)* 手机reg只提取手机号码,电话reg只提取电话
  2,测试代码: String str = "电话:13668978333"; String reg = "\\D0?(1\\d{10})(\\D|$)"; String tel = t.getValue(str, reg); // str = "电话:0370-6541114[白天]电话0370-6541000[晚上]"; // str = "电话:0734-6570769,小灵通5386568"; // str = "电话:13402158967"; // str = "电话:+86-0734-63702731 手机:..."; // str = "市场办公电话-010-82238887"; reg = "\\D((\\+86-)?((0\\d{2,3}\\-)?\\d{7,8}))(\\D|$)"; tel = t.getValue(str, reg); System.out.println(tel); String str = "电话:13668978333"; String reg = "\\D0?(1\\d{10})(\\D|$)"; String tel = t.getValue(str, reg); // str = "电话:0370-6541114[白天]电话0370-6541000[晚上]"; // str = "电话:0734-6570769,小灵通5386568"; // str = "电话:13402158967"; // str = "电话:+86-0734-63702731 手机:..."; // str = "市场办公电话-010-82238887"; reg = "\\D((\\+86-)?((0\\d{2,3}\\-)?\\d{7,8}))(\\D|$)"; tel = t.getValue(str, reg); System.out.println(tel); 3,getValue方法 /** * 得一正则表达对应的内容 * * @param con * @param reg * @return */ private String getValue(String con, String reg){ Pattern p = Pattern.compile(reg); Matcher m = p.matcher(con); String res = ""; while (m.find()) { res = m.group(1); logger.debug(res); } return res; } /** * 得一正则表达对应的内容 * * @param con * @param reg * @return */ private String getValue(String con, String reg){ Pattern p = Pattern.compile(reg); Matcher m = p.matcher(con); String res = ""; while (m.find()) { res = m.group(1); logger.debug(res); } return res; } 注意:如果目标字串以数字开头,要求目标字串必须以非数字开头(即号码前至少要有一个字符,在实际当中,这是非常可能的)
  我一直想写一个如果一目标字串以号码开头,号码前没有字符(像str = "134777766666")或者是有字符但不是\\d字符(像str = "电话:134777766666"),即兼顾这两种情况,但由于能力有限,一直写不出来
  如果如位技术大牛能留下正确的reg,不胜感激
  闲下来又改进了一下手机和电话的正则 手机:(?<!\\d)0?(1\\dquesauthor)(?!\\d) 电话:(?<!\\d)((\\+86-)?((0\\d{2,3}\\-)?\\d{7,8}))(?!\\d) 手机:(?<!\\d)0?(1\\dquesauthor)(?!\\d) 电话:(?<!\\d)((\\+86-)?((0\\d{2,3}\\-)?\\d{7,8}))(?!\\d) 这样就可以直接用目标串形如: str="010-12345678"; 的字串
  不要求前面有字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值