如何编写C#Regex以确保字符串以一个char后跟6位开头

时间:2013-07-11 13:22:47

标签: c# regex

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

  

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

但是如果我传递的字符串数字过多,如“S1234567”,则会失败。我在这里做错了什么?

3 个答案:

答案 0 :(得分:7)

var regex = new Regex(@"^[SRV]\d{6}$");

答案 1 :(得分:7)

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

仅用于匹配字符串:

[SRV]\d{6}

将该字符串作为单独的“单词”查找:

\b[SRV]\d{6}\b

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

^[SRV]\d{6}$

编辑:

你的正则表达式“失败”,因为它只是在字符串中寻找你的模式(作为我的第一个例子)。如果字符串为 S123456 7,则引擎与粗体部分匹配(从S到6),因此报告成功。你必须使用锚点(我的第三个例子),如果你想让字符串只包含你的模式而没有别的东西(即字符串从头到尾匹配模式)。

答案 2 :(得分:1)

^[sSvVnN]\d{6}$

将匹配指定字符的大小写