【问题标题】:.NET Regular Expression allow 3 repeated characters.NET 正则表达式允许 3 个重复字符
【发布时间】:2016-05-26 16:06:35
【问题描述】:

我正在尝试使用以下标准创建一个 .NET 正则表达式,但没有成功。我只有下面的正则表达式。任何帮助将不胜感激!

  1. 8-15 个字符(字母或数字,不区分大小写)
  2. 最多允许 3 个重复字符或数字
  3. 没有特殊字符或符号

这就是我所拥有的:

^(?=.*[0-9].*)(?=.*[A-Za-z].*)([0-9A-Za-z]\1{3}){8,15}$

【问题讨论】:

  • 您的正则表达式看起来至少需要一个数字和一个 alpha。对吗?
  • @bobblebubble 是的,rock 能够提供!谢谢!

标签: .net regex criteria


【解决方案1】:

这个正则表达式可以工作

^(?=.{8,15}$)(?!.*?(.)\1{3})[A-Za-z0-9]+$

Regex Demo

正则表达式分解

^ #Start of string
(?=.{8,15}$) #Lookahead to check there are 8 to 15 digits
(?!.*?(.)\1{3}) #Lookahead to determine that there is no character repeating more than thrice
[A-Za-z0-9]+ #Match the characters
$ #End of string

对于unicode的支持,可以使用

^(?=.{8,15}$)(?!.*?(.)\1{3})[\p{L}\p{N}]+$

注意 :- 要匹配一个字符和一个数字,您可以使用

^(?=.{8,15}$)(?=.*[A-Za-z])(?=.*\d)(?!.*?(.)\1{3})[A-Za-z0-9]+$

Regex Demo

【讨论】:

  • 如何合并 first length check lookahead into the match 或者可能已经监督了什么。
  • @bobblebubble 但如果长度不匹配,这将有助于更快地失败
  • 它也不支持Unicode。不知道这是否重要。
  • 很好,但是您的长度检查前瞻是多余的,因为在模式的消耗部分中只有一个字符类可以用限制量词来量化。
  • @WiktorStribiżew 我正在使用它,因为它会导致在某些情况下..**here** 和here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 2016-10-24
  • 2016-10-08
  • 2017-01-10
相关资源
最近更新 更多