这个规则的正则表达式?

时间:2011-05-25 08:57:56

标签: regex

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

  

“必须包含最小3和最大5   数字字符。同一个角色可以   最多重复一次5次!此外,长度应至少为10个字符。“

你有什么想法吗?

我从这开始:

^\d{3,5}$

但这确实限制了min。一个接一个3位小数,我需要的是将它们插入字母的可能性(最小3次和最多5次)。

请你伸出援助之手吗?

2 个答案:

答案 0 :(得分:3)

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

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

说明

  • (?=(?:\D*\d){3,5}\D*$):确保有3到5个数字
  • (?!.*(.)(?:.*\1){4}):确保同一个字符上有 5个副本
  • .{10,}:确保匹配字符串的长度至少为10。

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

答案 1 :(得分:3)

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