我如何使用正则表达式来检查我的数字是否有不同的数字。举例来说:号码:5554是可以的,但号码:5555不好。
sd2nnvve1#
这个正则表达式检查是否所有的数字都相同。然后取相反的数,你会发现你的数字是否有不同的数字。
^(\d)\1*$
此正则表达式检查是否至少有一个数字不同:
(\d)((?!\1)\d)+
在C#中使用RegularExpression属性进行EDIT
[RegularExpression(@"(\d)((?!\1)\d)+")]
dhxwm5r42#
在 perl 中,对于任何数字:
/^(\d)\1*$/
一些测试:
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
u91tlkcl3#
不要使用正则表达式。
bvjveswy4#
四个不一样的数字:
([0-9])(?!\1\1\1)[0-9]{3}
在某些正则表达式实现中,负前向中的反向引用不起作用。我用grep -P尝试了这个正则表达式。
grep -P
jjjwad0x5#
总有一天有人需要正则表达式解决方案在一串数字中找到至少 n 个不同的数字。在这种情况下,N 为3,以匹配所提供的样本。这个正则表达式是一个模板,下面的部分重复,每一步都需要找到一个不同的数字。因此像 (?! \1 ),
(?! \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
请注意,对于统计信息,捕获 * 所有 * 不同的数字。
tvokkenx6#
var a = 5555; var b = 5554; var a1 = a.ToString().ToCharArray().Distinct().Count(); var b1 = b.ToString().ToCharArray().Distinct().Count();
然后检查计数。
6条答案
按热度按时间sd2nnvve1#
这个正则表达式检查是否所有的数字都相同。然后取相反的数,你会发现你的数字是否有不同的数字。
此正则表达式检查是否至少有一个数字不同:
在C#中使用RegularExpression属性进行EDIT
dhxwm5r42#
在 perl 中,对于任何数字:
一些测试:
在Linux机器上运行脚本:
测试结果:
u91tlkcl3#
不要使用正则表达式。
bvjveswy4#
四个不一样的数字:
在某些正则表达式实现中,负前向中的反向引用不起作用。我用
grep -P
尝试了这个正则表达式。jjjwad0x5#
总有一天有人需要正则表达式解决方案
在一串数字中找到至少 n 个不同的数字。
在这种情况下,N 为3,以匹配所提供的样本。
这个正则表达式是一个模板,下面的部分重复,
每一步都需要找到一个不同的数字。因此像
(?! \1 )
,(?! \1 | \2 )
,(?! \1 | \2 | \3 )
* 等等。https://regex101.com/r/kyqEwe/1
一个稍微更有效的版本可以简化为:
https://regex101.com/r/b36MfA/1
请注意,对于统计信息,捕获 * 所有 * 不同的数字。
tvokkenx6#
然后检查计数。