从字符串中获取具体的数字,以c#中的整数开头#

问题描述:

我试图从字符串中获得匹配的自尊。我必须从给定的字符串中得到两种数字。数字从5开始,由6位数字开始。 ex(5******),从1开始后取5位数字(1*****)。从字符串中获取具体的数字,以c#中的整数开头#

我用下面的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***** *。任何帮助都会得到真正的重视。

+0

'(^ 5)[\ d] {6} =^5 \ d {6}'有什么问题? –

+1

不确定,因为问题不明确:您是在寻找['\ b(5 \ d {6} | 1 \ d {5})\ b'](http://regexstorm.net/tester?p=% 5cb(5%5cd%7b6%7d%7c1%5cd%7b5%7d)%5cb&i = 5106542)与'Regex.Matches'?请参阅[本演示](http://ideone.com/TpMlHz)。 –

+1

是否有一个原因,您需要验证完全数字的字符串?有时候只是'10000 ryanyuyu

问题是您的表达式不会对匹配的位置做任何要求,所以他们在中间找到匹配。

如果你需要找到适合自己的标准独立的数字,加上你的表情两侧\b,以确保没有字母/数字两边:

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

现在表达只考虑孤立的数字序列,5106542不会匹配,因为匹配的序列位于中间。

+0

谢谢巴迪。它的工作。很抱歉,迟到的确认。 –

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

你应该得到的整数,则只需选中的第一位。 但是,您可能希望在正则表达式的末尾添加“$”或\ b(如dasblinkenlight指出的那样)。