C# 复杂正则表达式

C# 复杂正则表达式,c#,regex,repeat,C#,Regex,Repeat,我需要只允许字母数字字符(大写)的长度从0-25个字符,并没有懒惰的所有重复的数字值 我得到了第一部分:Regex.IsMatch(tmpResult,“^[0-9A-Z]{0,25}$”;(这很简单) 11111 2-匹配 AABD333434-匹配 5555-不匹配 555-没有对手 谁能帮我一下吗 ^(?!(.)\1*$)[0-9A-Z]{0,25}$ 额外的(?!()\1*$)将拒绝由重复相同字符组成的任何字符串 (?!…)是一个负前瞻,如果匹配了…,则会导致主正则表达式失败,()\1

我需要只允许字母数字字符(大写)的长度从0-25个字符,并没有懒惰的所有重复的数字值

我得到了第一部分:Regex.IsMatch(tmpResult,“^[0-9A-Z]{0,25}$”;(这很简单)

11111 2-匹配
AABD333434-匹配
5555-不匹配
555-没有对手

谁能帮我一下吗

^(?!(.)\1*$)[0-9A-Z]{0,25}$
额外的
(?!()\1*$)
将拒绝由重复相同字符组成的任何字符串


(?!…)
是一个负前瞻,如果匹配了
,则会导致主正则表达式失败,
()\1*
将匹配一个重复字符字符串。

您可以使用普通方法来完成此操作。。。一旦让它与第一个表达式匹配,只需使用子例程迭代每个字符,并在第一次遇到与字符串中第一个不同的字符时返回true

除非它是无效字符串,否则在只检查大多数字符串的前2个字符后,它应该返回true

如果实现得好,这应该和正则表达式一样快,如果不是更快的话