我做了一个正则表达式来检查String的长度,所有字符都是数字,并以数字开头,例如123 以下是我的表达
REGEX =^123\\d+{9}$";
但它无法检查String的长度。它验证那些字符串只有它们的长度是9并且以123开头。 但是,如果我传递字符串1234567891它也验证它。但是我应该怎么做才能解决我身上出错的问题。
答案 0 :(得分:6)
就像这里已经回答的那样,最简单的方法就是删除+
:
^123\\d{9}$
或
^123\\d{6}$
取决于您的确切需求。
你也可以使用另一种,更复杂和通用的方法,一种消极的前瞻:
(?!.{10,})^123\\d+$
说明:
这:(?!.{10,})
是一个负面预测(?=
将是一个积极的预测),这意味着如果前瞻后的表达式匹配这种模式,那么整个字符串不匹配。大致意味着:只有当负面预测中的模式与不匹配时,才会满足此正则表达式的条件。
在这种情况下,如果.{10}
不匹配,则字符串仅匹配 ,这意味着10个或更多字符,因此仅当前面的模式最多匹配9个字符时才匹配
正向前瞻相反,只有在前瞻中的条件匹配时才匹配。
为了好奇而把它放在这里,它比你需要的更复杂。
答案 1 :(得分:5)
尝试使用这个:
^123\\d{6}$
我将其更改为6
,因为1,2和3应该仍然可以计为数字。
另外,我删除了+
。有了它,它将匹配1个或更多\d
s(因此无限数量的数字)。
答案 2 :(得分:0)
根据您在Doorknobs's answer下方的评论,您可以这样做:
int length = 9;
String prefix = "123"; // or whatever
String regex = "^" + prefix + "\\d{ " + (length - prefix.length()) + "}$";
if (input.matches(regex)) {
// good
} else {
// bad
}