.net 字符在一行中出现六次时匹配失败

.net 字符在一行中出现六次时匹配失败,.net,regex,regex-lookarounds,repeat,.net,Regex,Regex Lookarounds,Repeat,我想验证一个可变长度的字符串-VIN编号。我想确保它只包含字母数字字符,长度在9到15位之间。但是,我还要确保字符串中没有包含六个或更多字母数字字符的序列。我正在使用.NET的正则表达式引擎 00THZY7564TTX --> should pass validation X0000000TEVBV --> should fail validation 我看过很多帖子,但我似乎不能100%地把它降下来。目前,我有 (?<!(0){5,}.*)(?!.*(0){5,}.*)[A

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

00THZY7564TTX --> should pass validation
X0000000TEVBV --> should fail validation
我看过很多帖子,但我似乎不能100%地把它降下来。目前,我有

(?<!(0){5,}.*)(?!.*(0){5,}.*)[A-Za-z0-9]{1,}
(?
但它似乎忽略了字符串中的零(在上面的示例2中,它匹配
0000TEVBV
部分)

我做错了什么

提前感谢!!

使用此正则表达式:

^(?!.*(\d)\1{5})[A-Z0-9]{9,15}$
查看中的匹配项

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

六个或更多字母数字字符的序列
您是指相同字符的六个或更多字符(如六个
a
字符)?是的,您假设正确:)仅供参考,我假设了您所指的
六个或更多字母数字字符的序列
-如果需要任何调整,请告诉我。:)谢谢,很高兴能帮上忙。:)我不是100%确定,但我认为.NETXSD正则表达式不使用lookaheads。有没有办法不使用lookarounds来解决这个问题?嗯,如果是.NET正则表达式,那么lookaheads肯定是受支持的。它们通常是受支持的,但是在XSD文档中使用它时,它不起作用。根据John在这里的回答,看起来不支持环视功能。