java正则表达式匹配重复的数字,而不是0,1
我需要写一个模式,匹配以012开头的11位数字和012后面的两位数字,不应该是0,1,应该重复。 例如:01244521478为真或01266235698为真,01200256354为假。我尝试了这个模式:012。\\1{1}[\\d]{6}$但我不知道在哪里说0,012之后不允许使用1。 请帮助我您的正则表达式012。\1{1}[\d]{6}$可以,但无法处理您的第4位和第5位数字不应为0或1,应重复要求。而且{1}不需要,因为默认情况下它是隐式的。仅当柯利括号内的值大于一个或类似于{2}或{1,5}的范围时才使用它 这个正则表达式应该满足您的需要java正则表达式匹配重复的数字,而不是0,1,java,regex,match,digits,Java,Regex,Match,Digits,我需要写一个模式,匹配以012开头的11位数字和012后面的两位数字,不应该是0,1,应该重复。 例如:01244521478为真或01266235698为真,01200256354为假。我尝试了这个模式:012。\\1{1}[\\d]{6}$但我不知道在哪里说0,012之后不允许使用1。 请帮助我您的正则表达式012。\1{1}[\d]{6}$可以,但无法处理您的第4位和第5位数字不应为0或1,应重复要求。而且{1}不需要,因为默认情况下它是隐式的。仅当柯利括号内的值大于一个或类似于{2}或{
^(?=\d{11}$)012([^01])\1\d{6}$
说明:
^->字符串的开头
?=\d{11}$->正向向前看,确保它只包含数字,并且正好是11位数字。为什么需要这样做,因为[^01]可以对0和1求反,但不允许使用任何其他字符。
012->按字面意思匹配012
[^01]\1->后两位数字将重复,可以是除0和1之外的任何数字
\d{6}->匹配任意六位数字
$->输入结束
在正则表达式中使用。\\1,它将捕获组中的任何字符,并使用反向引用引用该caputure,例如,该反向引用也将匹配012$$521478
您可以做的是更改。\\1以匹配从2到9的数字,如[2-9]\\1。如果没有在工具或代码中引用第二个捕获组,则可以省略该组。{1}可以省略,[\\d]可以写成\\d
更新后的正则表达式可能如下所示:
^012[2-9]\1\d{6}$
在Java中:
String regex = "^012([2-9])\\1\\d{6}$";
|
解释
^断言字符串的开头
012符合字面意思
[2-9]在组中捕获数字2-9
\1对第一个捕获组的反向引用
\d{6}匹配6位数字
$Assert是字符串的结尾