RegEx用于匹配7位数字但不包含带前缀的数字

时间:2013-01-04 06:19:37

标签: c# regex

我正在尝试从纯文本中检测7位数字,这是我正在使用的正则表达式。

Regex sevenDigit = new Regex(@"(?<!\d)\d{7}(?!\d)");

现在,我希望能够仅匹配那些不以特定前缀开头的7位数字。特别是“usr_id”。 如何修改此正则表达式以仅匹配那些不是usr_id = 1234567形式的正则表达式?

谢谢!

1 个答案:

答案 0 :(得分:3)

我会这样做:

Regex sevenDigit = new Regex(@"(?<!usr_id=)\b\d{7}\b");

另请注意\b字边界,这是一种更优雅的方式,可以说“数字开头”和“数字结尾”。它们与您的(?<!\d)(?!\d)外观断言完全匹配 (最值得注意的是,它们不允许1234567abc1234567xyz内匹配你的正则表达式允许匹配)。所以如果你真的需要这种方法,你也可以这样做

Regex sevenDigit = new Regex(@"(?<!\d|usr_id=)\d{7}(?!\d)");