Java 正则表达式/逻辑:6位数字,不应包含连续或连续重复的数字

Java 正则表达式/逻辑:6位数字,不应包含连续或连续重复的数字,java,regex,Java,Regex,我想要一个正则表达式/代码来检查它是否应该是6位数字,最小值和最大值是6位。它不应包含连续数字,如123456、654321、453212等。 这意味着没有两个数字是连续的。 此外,它不应包含连续重复的数字,如244674 建议一些解决方案。好吧,正则表达式当然是可能的,但你有多确定我没有在什么地方打错 ^ # Start of string (?: # Start of non-capturing group: 0(?![901])| # Match

我想要一个正则表达式/代码来检查它是否应该是6位数字,最小值和最大值是6位。它不应包含连续数字,如123456654321、453212等。 这意味着没有两个数字是连续的。 此外,它不应包含连续重复的数字,如244674


建议一些解决方案。

好吧,正则表达式当然是可能的,但你有多确定我没有在什么地方打错

^            # Start of string
(?:          # Start of non-capturing group:
 0(?![901])| # Match 0, unless followed by 9, 0, or 1
 1(?![0-2])| # etc...
 2(?![1-3])|
 3(?![2-4])|
 4(?![3-5])|
 5(?![4-6])|
 6(?![5-7])|
 7(?![6-8])|
 8(?![7-9])|
 9(?![890])
){6}         # 6 times
$            # End of string

测试它。

我认为这比正则表达式能够做的更多;你可能需要使用一些程序代码来完成你想要的。什么意义上的打字错误?我不明白你的意思。基本上,用户不应输入连续或连续数字。如果是person类型,或者是type,那么它应该抛出一个错误。对不起,我的意思是,当正则表达式像这个一样冗长时,很容易漏掉错误。我很确定我没有做什么,虽然:)这是一个好的开始,但它并不完美。到底是什么不起作用?您知道必须使用
(?x)
修饰符编译正则表达式,因为它是一个详细的正则表达式?它接受135790作为包含连续变量,因为1在开始处,0在结束处。