如何编写C#正则表达式以确保字符串以一个字符后跟6位数字开头

如何编写C#正则表达式以确保字符串以一个字符后跟6位数字开头,c#,regex,C#,Regex,我需要用C#编写一个正则表达式,以确保字符串以S、R或V中的一个字符开头,然后有以下六位数字,如:“S123456”。下面是我尝试使用的正则表达式: @“(S|R|V)[0-9]{6}?” 但是,如果我传递的字符串的位数过多,比如“S1234567”,它就会失败。我做错了什么?三个选项,取决于您想要实现的目标: var regex = new Regex(@"^[SRV]\d{6}$"); 仅用于匹配字符串: [SRV]\d{6} 要将该字符串作为单独的“单词”查找,请执行以下操作: 要使正

我需要用C#编写一个正则表达式,以确保字符串以S、R或V中的一个字符开头,然后有以下六位数字,如:“S123456”。下面是我尝试使用的正则表达式:

@“(S|R|V)[0-9]{6}?”


但是,如果我传递的字符串的位数过多,比如“S1234567”,它就会失败。我做错了什么?

三个选项,取决于您想要实现的目标:

var regex = new Regex(@"^[SRV]\d{6}$");
仅用于匹配字符串:

[SRV]\d{6}
要将该字符串作为单独的“单词”查找,请执行以下操作:

要使正则表达式与完整字符串匹配(我认为这是您需要的):

编辑:

您的regexp“失败”,因为它只是在字符串中查找您的模式(作为我的第一个示例)。如果字符串为S1234567,则引擎匹配粗体部分(从S到6),因此报告成功。如果希望字符串只包含模式而不包含其他内容(即字符串从头到尾与模式匹配),则必须使用锚(我的第三个示例)


将匹配指定字符的小写和大写

当您说“它失败”时,我假设您的意思是“它在不应该匹配的时候匹配正则表达式”?除非他的意思是它在应该匹配的时候不匹配,在这种情况下,它只是更改为{6,}作为asker,^和&,如果您想用谷歌搜索它们,则称为锚
\b[SRV]\d{6}\b
^[SRV]\d{6}$
^[sSvVnN]\d{6}$