正则表达式:用特殊字符替换数字中间的位数

时间:2014-09-10 11:51:01

标签: c# regex

我有一个非常大的数字(它的长度可能会有所不同)作为输入。

我需要一个正则表达式,它将保留前3位数字和最后3位未经修改的数字,并用一些字符替换它们之间的所有数字。输出的总长度应保持不变。

例如:

输入123456789123456

输出123xxxxxxxxx456

到目前为止,我可以使用

将输入数字分成3个组
^(\d{3})(.*)(\d{3})

第二组是需要更换的组,因此它将类似于

$1 {Here goes the replacement of the 2 group} $3

我正在努力替换:

Regex r = new Regex("^(\d{3})(.*)(\d{3})");
r.Replace(input,"$1 {Here goes the replacement of the 2 group} $3")

我该如何在这里写下2组的替补?

提前致谢。

1 个答案:

答案 0 :(得分:4)

你可以试试下面使用lookbehind和lookahead的正则表达式,

string str = "123456789123456";
string result = Regex.Replace(str, @"(?<=\d{3})\d(?=\d{3})", "x");
Console.WriteLine(result);
Console.ReadLine();

<强>输出:

123xxxxxxxxx456

IDEONE

DEMO