我试图让一个字符串受到尊重。我必须从给定的字符串中获取两种数字。数字从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*****
*。任何帮助都会得到真正的重视。
答案 0 :(得分:2)
问题是你的表达式对匹配的位置没有任何要求,所以他们在中间找到匹配。
如果您需要查找符合条件的独立数字,请在表达式的两边添加\b
,以确保两边都没有字母/数字:
var sampleId1 = Regex.Match(input, @"\b(1)[\d]{5}\b");
// ^^ ^^
既然表达式只考虑了孤立的数字序列,5106542
就不会匹配,因为匹配的序列在中间。
答案 1 :(得分:0)
试试这个: ^(5 \ d {6} | 1 \ d {5})
你应该得到整数,然后检查第一个数字。 但是,您可能希望在正则表达式的末尾添加“$”或\ b(如指出的dasblinkenlight)。