我想从字符串中提取手机号码。
示例字符串为"Hi, Your Mobile no. is: 9876499321."
现在,我想从字符串中提取“ 9876499321”。我的主字符串可以在字符串中包含+919876499321或919876499321或09876499321以及其他单词。如何实现呢?
我想要的规则:
我已经尝试过了:
String myregex = "^\\d{10}$";
Pattern pattern = Pattern.compile(myregex);
Matcher matcher = pattern.matcher(inputStr);
while (matcher.find()) {
System.out.println(matcher.group());
}
我找不到任何匹配项。
答案 0 :(得分:1)
您可以先删除所有连字符,然后再将字符串传递给pattern.matcher
,然后匹配10到14位数字的独立数字:
String inputStr = "Hi, Your Mobile no. is: 9876499321. Also, +919876499321 or 919876499321 or 09-876499321.";
String myregex = "(?<!\\d)\\d{10,14}(?!\\d)";
// Or String myregex = "\\b\\d{10,14}\\b";
Pattern pattern = Pattern.compile(myregex);
Matcher matcher = pattern.matcher(inputStr.replace("-", ""));
while(matcher.find()) {
System.out.println(matcher.group());
}
请参见Java demo,输出:
9876499321
919876499321
919876499321
09876499321
(?<!\d)\d{10,14}(?!\d)
模式仅在10到14位数字之间没有匹配时才匹配。
答案 1 :(得分:0)
如果始终是10位数以上的字符串的最后10位数,则可以执行以下操作:
String myregex = "^.*(\\d{10})([^\\d].*|$)";
并使用matcher.group(0)
代替matcher.group()
。