从c#中的起始整数中获取字符串中的特定数字

时间:2016-04-22 12:34:02

标签: c# regex

我试图让一个字符串受到尊重。我必须从给定的字符串中获取两种数字。数字从5开始后取6位数。 ex(5******)并从1开始,后跟5位数(1*****)。

我使用以下regexex:

(5)[\d]{6} 
(1)[\d]{5}

代码:

  var sampleId5 = Regex.Match(input, @"(5)[\d]{6}");
  if (sampleId5.Success)
  {
      string test = sampleId5.Value;
  }

  var sampleId1 = Regex.Match(input, @"(1)[\d]{5}");
  if (sampleId1.Success)
  {
      string test1 = sampleId1.Value;
  }

这里的问题是,我是否通过5106542它会返回两个协调的结果。

我也试过这个(^5)[\d]{6}。尽管如此,它不起作用。

我只需要5***** *。任何帮助都会得到真正的重视。

2 个答案:

答案 0 :(得分:2)

问题是你的表达式对匹配的位置没有任何要求,所以他们在中间找到匹配。

如果您需要查找符合条件的独立数字,请在表达式的两边添加\b,以确保两边都没有字母/数字:

var sampleId1 = Regex.Match(input, @"\b(1)[\d]{5}\b");
//                                   ^^          ^^

既然表达式只考虑了孤立的数字序列,5106542就不会匹配,因为匹配的序列在中间。

答案 1 :(得分:0)

试试这个: ^(5 \ d {6} | 1 \ d {5})

你应该得到整数,然后检查第一个数字。 但是,您可能希望在正则表达式的末尾添加“$”或\ b(如指出的dasblinkenlight)。