我只需要允许0-25个字符长度的字母数字字符(大写字母),并且不允许任何延迟的全重复数值。
我有第一部分:Regex.IsMatch(tmpResult,“^ [0-9A-Z] {0,25} $”); (这很容易)
111112 - 匹配
AABD333434 - 匹配
55555555 - 没有匹配
555 - 不匹配
有人可以帮我解决这个问题吗?
答案 0 :(得分:5)
^(?!(.)\1*$)[0-9A-Z]{0,25}$
额外(?!(.)\1*$)
将拒绝任何由重复相同字符组成的字符串。
(?!…)
是否定前瞻,如果…
匹配,则会导致主正则表达式失败,(.)\1*
将匹配重复的字符串字符。
答案 1 :(得分:0)
你可以使用普通方法做到这一点......一旦你将它与你的第一个表达式匹配,只需使用一个子程序迭代每个字符,并在第一次遇到与第一个字符不同的字符时返回true字符串。
只检查大多数字符串的前2个字符后,它应返回true,除非它是无效的字符串。
如果没有更快的话,这应该和正则表达式一样快,如果它实现得好的话。