使用c#中的Regex从字符串中检索数字

时间:2012-12-15 05:18:16

标签: c# regex

我想从字符串中检索一个数字,无论数字以8,9或6开头,数字的长度应该是8或9个字符。例如,92000000,9200 0000,9200-0000。

2 个答案:

答案 0 :(得分:2)

这个怎么样:(?<!\d)([896]\d{3})(?:[-\s]?)(\d{4})(?!\d)

(?:[-\s]?)将可选分隔符空格或短划线作为非捕获组。

您可以通过连接匹配组1和2来获取您的号码:

var input = new string[] {
    "81000000", "92000000", "9200 0000", "9200-0000"
};
var regex = new Regex (@"(?<!\d)([896]\d{3})(?:[-\s]?)(\d{4})(?!\d)");
foreach (var str in input) {
    var match = regex.Match (str);
    Console.WriteLine ("TEST: {0} {1} - {2}", str, match.Success,
                       match.Groups [1].Value + match.Groups [2].Value);
}

我也试过(?<!\d)([896]\d{3}(?:[-\s]?)\d{4})(?!\d),但不会从匹配结果中删除分隔符。

答案 1 :(得分:0)

尝试以下正则表达式:

(?<!\d)[896]\d{3}([- ]?)\d{4}(?!\d)

尝试从下次使用 Regexpal 解决。

干杯。