有这么一个字符串:
用户名(用户昵称)(用户编号(固定11位))
举例:
幽鬼(spe)(13812341234)
莱恩(lion)(13812341235)
正常情况下我们可以通过字符串"("切分获取手机号。
可以不可用正则表达式来获取手机号信息。
我想过用正则表达式可以获取数字。但是用户昵称里,用户填了数字,划分出来的数据就不是手机号了。
所以,有没有正则表达式来连续数字来实现。
可以分两种情况:
1、用户昵称中设置了填写长度(只能填5个)
2、用户昵称中没有设置填写长度。
小弟对正则表达式的使用不是很好,诚心求教。
用户名(用户昵称)(用户编号(固定11位))
举例:
幽鬼(spe)(13812341234)
莱恩(lion)(13812341235)
正常情况下我们可以通过字符串"("切分获取手机号。
可以不可用正则表达式来获取手机号信息。
我想过用正则表达式可以获取数字。但是用户昵称里,用户填了数字,划分出来的数据就不是手机号了。
所以,有没有正则表达式来连续数字来实现。
可以分两种情况:
1、用户昵称中设置了填写长度(只能填5个)
2、用户昵称中没有设置填写长度。
小弟对正则表达式的使用不是很好,诚心求教。
public static String getTelephoneNumber(String str) {
String pattern = ".+?\\(.+?\\)\\((\\d+)\\)"; return str.replaceAll(pattern, "$1");
} public static void main(String[] args) throws Exception {
System.out.println(getTelephoneNumber("莱恩(lion)(13812341235)"));
System.out.println(getTelephoneNumber("莱恩(12345)(13812341235)"));
System.out.println(getTelephoneNumber("莱恩(12345abc)(13812341235)"));
}
}输出
13812341235
13812341235
13812341235
看了几天,后来找各种正则练,csdn上也不少,看到自己不会的就会马上搞起,会的别人有适合的回答的也就不写了,建议lz花时间看看,还是不错地
List<String> strList = new ArrayList<String>();
String string = "风暴之灵(138123430)(13812341235)";
String regex = "\\(((13|15|18)\\d{9})\\)";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(string);
while (m.find()) {
strList.add(m.group(1));
}
if (!strList.isEmpty()) {
System.out.println(strList.get(strList.size() - 1));
}
}
public static String getTelephoneNumber(String str) {
String pattern = ".+?(\\(.+?\\))?\\((\\d+)\\)"; return str.replaceAll(pattern, "$2");
} public static void main(String[] args) throws Exception {
System.out.println(getTelephoneNumber("莱恩(lion)(13812341235)"));
System.out.println(getTelephoneNumber("莱恩(12345)(13812341235)"));
System.out.println(getTelephoneNumber("莱恩(12345abc)(13812341235)"));
System.out.println(getTelephoneNumber("莱恩((((1234567890))))(13812341235)"));
System.out.println(getTelephoneNumber("莱恩(13812341235)"));
System.out.println(getTelephoneNumber("莱恩()(13812341235)"));
}
}[code=java]
13812341235
13812341235
13812341235
13812341235
13812341235
13812341235[/code]
输出
这个可以有,而且更加简洁,谢谢二狗同学
他这个有点小bug哦,LZ试试这个场景:
System.out.println(getTelephoneNumber("莱恩((((1234567890))))(110)(13812341235)"));