2011-05-25 101 views
0

我试图找出这条规则正则表达式:这条规则的正则表达式?

“必须包含至少3个和最多5个 数字字符相同的字符可以 重复最多5次而且,长度应!最少10个字符。“

你有没有ideea?

我开始用这样的:

^\d{3,5}$ 

但这并限制有分钟。 3个小数一个接一个,我需要的是可能让他们插入字母也(最少3和最多5次出现)。

您能帮忙吗?

+0

这功课吗? – Vadiklk 2011-05-25 08:59:44

+0

不,这是工作要求。 – 2011-05-25 09:01:04

回答

3

这是可能的正则表达式,但反向引用的需要会使它非常缓慢。

^(?=(?:\D*\d){3,5}\D*$)(?!.*(.)(?:.*\1){4}).{10,} 

描述:

  • (?=(?:\D*\d){3,5}\D*$):确保有3至5个标记
  • (?!.*(.)(?:.*\1){4}):确保有在相同的字符
  • .{10,} 5个拷贝:确保匹配的字符串的长度至少为10.

更简单的方法是使用Dictionary<char, int>并对字符进行计数。

3

所有这些条件(长度除外)都非常不适合正则表达式。不受欢迎的:它将采用指数大小的表达式。使用正常的编程方法来计算字母,数字和重复。 - 除非这是正则表达式500的家庭作业,否则使用正则表达式没有任何意义。

+0

谢谢,我认为从干净的代码角度来看,使用正则表达式更好,但我同意你所说的。 – 2011-05-25 09:07:04

+0

@Cristian:不,一个复杂的正则表达式很脏。 – kennytm 2011-05-25 09:11:57