正则表达式字符串,用于查找不以多个数字之一开头的数字

时间:2016-12-29 20:53:16

标签: c# regex

我希望找到15或16位不以某些数字开头的数字。所以我有:

  [0-9]{15,16}

这可以得到我的15和16位数字,但如果他们以596542或751302开头,我不想要这些数字。所以我试过了:

     ^(?!596542|751302)[0-9]{15,16} 

但那并没有奏效。任何帮助将不胜感激。

编辑:如果(?!596542 | 751302)不在表达式的开头,我想找到数字 - 不是行的开头。此外,它可能是一个较长的数字串。

1 个答案:

答案 0 :(得分:1)

由于您希望匹配至少包含不包含 596542751302的数字的数字

@"\b(?![0-9]*(?:596542|751302))[0-9]{15,}"

请参阅regex demo

如果您需要将无法启动的至少15位数字与2个值匹配,请使用

@"\b(?!596542|751302)[0-9]{15,}"

请参阅this regex demo

var results = Regex.Matches(s, @"\b(?![0-9]*(?:596542|751302))[0-9]{15,}")
    .Cast<Match>()
    .Select(m => m.Value)
    .ToList();

要匹配整数,请在模式的末尾添加\b