Java 正则表达式 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 23:33:04
public void TestTelephone()
{
String tele = "12345678_2343424234234_78978868678678_34534_sdfa_76867789";
Pattern p = Pattern.compile("(\\d{8})+?");
Matcher m = p.matcher(tele);
int i = 1;
while (m.find())
{
System.out.println("The matched String "+i+" "+m.group());
i++;
}

}
这个结果返回:
The matched String 1 12345678
The matched String 2 23434242
The matched String 3 78978868
The matched String 4 76867789

但是我只想让他匹配正好是8个数字的号码,不想让他匹配多于或少于8个数字的号码。怎么作?

Pattern p = Pattern.compile("(?<!\\d)(\\d{8})(?!\\d)");

Pattern p = Pattern.compile("((\\D)*)(\\d{8})((\\D)+)");
or
Pattern p = Pattern.compile("((\\D)?)(\\d{8})((\\D)+)");

最好先用String.split("_")方法拆分以下
然后再用正则去匹配 这样比较容易

先spilt("-")拆分,然后对每一个进行判断不就得了吗,正则表达式写成\\d{8}