我正试图找出这条规则的正则表达式:
“必须包含最小3和最大5 数字字符。同一个角色可以 最多重复一次5次!此外,长度应至少为10个字符。“
你有什么想法吗?
我从这开始:
^\d{3,5}$
但这确实限制了min。一个接一个3位小数,我需要的是将它们插入字母的可能性(最小3次和最多5次)。
请你伸出援助之手吗?
答案 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的作业,否则使用正则表达式没有任何意义。