-3

数字が8、9、または6で始まり、数字の長さが8または9文字である文字列から、数字を取得したい。例:92000000,9200 0000,9200-0000

4

2 に答える 2

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)ましたが、一致結果から区切り文字が削除されません。

于 2012-12-15T05:41:56.803 に答える
0

以下の正規表現を試してください。

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

次回からRegexpalを使って解いてみてください。

乾杯。

于 2012-12-15T05:43:49.557 に答える