【发布时间】:2019-06-18 18:54:54
【问题描述】:
我想从字符串中提取手机号码。
示例字符串为"Hi, Your Mobile no. is: 9876499321."
现在我想从字符串中提取“9876499321”。我的主字符串可以在字符串中包含 +919876499321 或 919876499321 或 09876499321 以及其他单词。如何做到这一点?
我想要的规则:
- 首先删除所有“-”
- 然后提取范围从10位到14位(含)的数字
我试过这个:
String myregex = "^\\d{10}$";
Pattern pattern = Pattern.compile(myregex);
Matcher matcher = pattern.matcher(inputStr);
while (matcher.find()) {
System.out.println(matcher.group());
}
我找不到任何匹配项。
【问题讨论】:
-
尝试
"\\d{10}\\b"获取独立号码的最后 10 位数字。这里的实际规则是什么? -
如果我想从号码(例如 91-923223)中删除任何“-”怎么办?
-
如果您提供所有可能的案例/解释确切数量的规则以提取您想要的文本怎么办?
-
@WiktorStribiżew 编辑了我的问题
-
尝试 1)
Matcher matcher = pattern.matcher(inputStr.replace("-", ""))和 2)"\\b\\d{10,14}\\b"或"(?<!\\d)\\d{10,14}(?!\\d)"正则表达式。