日期:2014-05-17  浏览次数:20733 次

大家帮忙想想办法,如何从一篇文章中截取身份证号!!!!急急。。
问题同上。。。
 

------解决方案--------------------
如果文章在页面上,可以使用js的正则表达式去截取,如果文章从后台传输过来的话,可以在后台使用java的方法截取
------解决方案--------------------
把你的文章全部读到一个String里面去,再使用正则截取。。。

正则截取的思路很多,我通常会这样做:

1。把String的内容中,非数字或者X的替换成空格
2。将所有的连续空格替换成一个空格
3。把替换后的字符串分割成String数组(split("\\s"))
4。遍历数组,如果数组中的元素满了18位,并且前17位都是数字,第18位是数字或者X的话,那么我就认为它是一个身份证号码了。
------解决方案--------------------
探讨

把你的文章全部读到一个String里面去,再使用正则截取。。。

正则截取的思路很多,我通常会这样做:

1。把String的内容中,非数字或者X的替换成空格
2。将所有的连续空格替换成一个空格
3。把替换后的字符串分割成String数组(split("\\s"))
4。遍历数组,如果数组中的元素满了18位,并且前17位都是数字,第18位是数字或者X的话,那么我就认为它是一个身份证……

------解决方案--------------------
15位数字或18位数字
^\d{15}|\d{}18$

17位数位+X
^\\d{17}(\\d|x)$

------解决方案--------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class AdminTest {

public static void main(String[] args) {

String test = "asdsdfdsf sf dsfdsfsdf safasf 撒旦撒旦写个你的身份证发射的佛挡杀佛速度斯蒂芬的萨芬的萨芬斯蒂芬发实打实的发";
System.out.println(AdminTest.getVlues(test));
}

public static String getVlues(String values) {
String str = "\\d{6}((19|20)\\d{2})((0[0-9])|(1[0-2]))(((0|1|2)[0-9])|(3[0,1]))\\d{3}[xX\\d]";
Pattern pattern = Pattern.compile(str);
Matcher matcher = pattern.matcher(values);
if (matcher.find()) {
return matcher.group();
}
return "";
}
}
在test中加上你的身份证号嘛,如果要返回多哥身份证,只需要把String改为集合即可