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