遇到这些情况:
我需要找到具有15个字符长度的字符串。
到现在为止我制作了这段代码:
String pattern = "(([0-9]){15})";
Mathcer m = new Mathcer(pattern);
if (m.find()){
System.out.println(m.group(1));
}
结果是这样的:
我怎样才能创建一个正则表达式,它可以给我15个结果,就像我认为这个正则表达式可以给我的那样。超过15是不可接受的。
答案 0 :(得分:8)
使用^
和$
锚点标记字符串的开头和结尾:
String pattern = "^([0-9]{15})$";
^
匹配字符串$
匹配字符串如果没有这些锚点,您只需在字符串中的任何位置查找15个连续数字。匹配字符串可以另外包含更多数字(甚至包含字母),但仍然匹配。
(另外,你的内部括号是多余的 - 我已经删除它。如果你正在访问整个匹配的值而不是第一组捕获的值,你甚至可以发出其他括号:{ {1}})
答案 1 :(得分:3)
只需在正则表达式中添加开头和结尾:
"^[0-9]{15}$"
^(([0-9]){15})$
表示“字符串的开头”
^
表示“字符串结束”
因此,字符串中只能有15个数字。
有关Java中的更多正则表达式运算符,请参阅Pattern
documentation
答案 2 :(得分:2)
只需使用matches()
代替'find()'