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

bqujaahr  于 2023-10-22  发布在  其他
关注(0)|答案(6)|浏览(164)

我如何使用正则表达式来检查我的数字是否有不同的数字。举例来说:号码:5554是可以的,但号码:5555不好。

sd2nnvve

sd2nnvve1#

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

^(\d)\1*$

此正则表达式检查是否至少有一个数字不同:

(\d)((?!\1)\d)+

在C#中使用RegularExpression属性进行EDIT

[RegularExpression(@"(\d)((?!\1)\d)+")]
dhxwm5r4

dhxwm5r42#

perl 中,对于任何数字:

/^(\d)\1*$/

一些测试:

  • script.pl* 的内容:
use warnings;
use strict;

while ( <DATA> ) {
        print unless /^(\d)\1*$/;
}

__DATA__
55555
56
5556
56565
5
6555
55655
55

在Linux机器上运行脚本:

perl script.pl

测试结果:

56
5556
56565
6555
55655
u91tlkcl

u91tlkcl3#

不要使用正则表达式。

bvjveswy

bvjveswy4#

四个不一样的数字:

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

在某些正则表达式实现中,负前向中的反向引用不起作用。我用grep -P尝试了这个正则表达式。

jjjwad0x

jjjwad0x5#

总有一天有人需要正则表达式解决方案
在一串数字中找到至少 n 个不同的数字。
在这种情况下,N 为3,以匹配所提供的样本。
这个正则表达式是一个模板,下面的部分重复,
每一步都需要找到一个不同的数字。因此像 (?! \1 )

  • (?! \1 | \2 )(?! \1 | \2 | \3 )* 等等。
(\d)(?:\d*?(?!\1)(\d)(?:\d*?(?!\1|\2)(\d)))

https://regex101.com/r/kyqEwe/1

( \d )                      # (1)
(?:
   \d*? 
   (?! \1 )
   ( \d )                   # (2)
   (?:
      \d*? 
      (?! \1 | \2 )
      ( \d )                # (3)
   )
)

一个稍微更有效的版本可以简化为:

(\d)\d*?(?!\1)(\d)\d*?(?!\1|\2)\d

https://regex101.com/r/b36MfA/1

( \d )                # (1)

\d*? 
(?! \1 )
( \d )                # (2)

\d*? 
(?! \1 | \2 )
\d

请注意,对于统计信息,捕获 * 所有 * 不同的数字。

tvokkenx

tvokkenx6#

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

然后检查计数。

相关问题