Regex 正则表达式-具有不同的数字

Regex 正则表达式-具有不同的数字,regex,Regex,如何使用正则表达式检查我的数字是否有不同的数字。 例如:数字:5554正常,但数字:5555不正常。不要使用正则表达式 var a = 5555; var b = 5554; var a1 = a.ToString().ToCharArray().Distinct().Count(); var b1 = b.ToString().ToCharArray().Distinct().Count(); 然后检查计数。四个不同的数字: (

如何使用正则表达式检查我的数字是否有不同的数字。
例如:数字:5554正常,但数字:5555不正常。

不要使用正则表达式

        var a = 5555;
        var b = 5554;
        var a1 = a.ToString().ToCharArray().Distinct().Count();
        var b1 = b.ToString().ToCharArray().Distinct().Count();

然后检查计数。

四个不同的数字:

([0-9])(?!\1\1\1)[0-9]{3}

在一些正则表达式实现中,反向前瞻中的反向引用不起作用。我用
grep-P

尝试了这个正则表达式。这个正则表达式检查所有数字是否相同。然后取相反的数字,你会发现你的号码是否有不同的数字

^(\d)\1*$
此正则表达式检查是否至少有一个数字不同:

(\d)((?!\1)\d)+
使用正则表达式属性在C#中编辑

[RegularExpression(@"(\d)((?!\1)\d)+")]
在perl中,对于任何数字:

/^(\d)\1*$/
一些测试:

script.pl的内容:

结果:

56
5556
56565
6555
55655

有多少个数字?数以百万计的?几千?10?你能改进一下你的要求吗?例如,它只是最后一个数字,还是您需要“至少n个不同的数字”?@Hadas,这取决于您使用的语言。区别是什么?我使用C#。@Hadas,那么您只需测试数字是否与正则表达式匹配,如果不匹配,您的数字至少有一个不同的数字。谢谢,但我在属性的RegulaeExpressionAttribute中使用正则表达式。@Hadas为您的解决方案进行了后期编辑,我们可以编写:([0-9])(?!\1{3}[0-9]{3}因为如果我们想要一个长的数字,我们不想写“\1”百万次……我发现了一个新问题:我想我可以把这个字符“()+-*”放到这个数字中。有解决办法吗?
perl script.pl
56
5556
56565
6555
55655