当角色连续六次出现时失败匹配

时间:2014-07-23 23:44:19

标签: .net regex regex-lookarounds repeat

我想验证一个可变长度的字符串 - 一个VIN号。我想确保它只包含字母数字字符,长度在9到15位之间。但是,我还想确保字符串中没有任何地方是六个或更多字母数字字符的序列。我正在使用.NET的正则表达式引擎。

00THZY7564TTX --> should pass validation
X0000000TEVBV --> should fail validation

我看了很多帖子,但我似乎无法将其降低100%。目前,我有

(?<!(0){5,}.*)(?!.*(0){5,}.*)[A-Za-z0-9]{1,}

但似乎忽略了字符串中的零(在上面的示例#2中,它与0000TEVBV部分匹配)。

我做错了什么?

提前致谢!!

1 个答案:

答案 0 :(得分:1)

使用此正则表达式:

^(?!.*(\d)\1{5})[A-Z0-9]{9,15}$

查看 the regex demo 中的匹配项。

  • 允许使用[A-Z0-9]{9,15}
  • 的9到15个大写字母或数字
  • 不允许一个字符(例如A)处于六个序列中,例如AAAAAA
  • ^锚点断言我们位于字符串的开头
  • $锚点断言我们位于字符串的末尾