2010-10-28 44 views
3

我只需要允许0-25个字符长度的字母数字字符(带大写字母),并且不需要全部重复的数字值。Tricky正则表达式

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

111112 - 比赛
AABD333434 - 比赛
55555555 - 敌不过
555 - 不匹配

任何人都可以请帮我这个?

回答

5
^(?!(.)\1*$)[0-9A-Z]{0,25}$ 

额外(?!(.)\1*$)将拒绝由重复相同字符的任何字符串。

(?!…)负先行将导致如果匹配主正则表达式失败,并且(.)\1*将匹配重复字符的字符串。

+0

完美的作品,谢谢Kenny。 – 2010-10-28 18:09:33

0

使用正常的方法你可以只做到这一点...一旦你有你第表情有匹配,只需使用一个子程序通过每个字符迭代并返回true你第一次遇到不同于第一字符在字符串中。

在检查大部分字符串的前2个字符后,应该返回true,除非它是无效字符串。

这应该是同样快的正则表达式如果不是更快,如果它被很好的实施。