日期:2014-05-20  浏览次数:20709 次

最后10分 问个正则表达式的问题
在论坛看贴子的时候突然想起来自己以前的一个问题

要求一个手机号
139   或者   138   开头  
如果是139开头   那第4位就不能是4     138开头的没有别的要求
这应该怎么写   ??     谢谢回答!

------解决方案--------------------
(139[\\d&&[^4]]\\d{7}|138\\d{8})
------解决方案--------------------
String s = "13841111111 ";
String regex = "^13(?!94)[89]\\d{8}$ ";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println(m.group());
}
------解决方案--------------------
139[012356789]\d{7}|138\d{8}

不觉得把两个正则连起来是什么丢人的事,相反,我觉得这是数学中问题分解的极好例子。