C# 正则表达式替换身份证号中间部分为星号
替换前:31010719840402173X
替换后:3101**********173X
用Regex类实例化正则表达式,
首先引入命名空间:using System.Text.RegularExpressions;
一开始用了:
(?<=[\d]{4})\d(?=[\d]{4})
发现最后一位如果不是数字,而是字母X 时,最后会剩5位数,不符合条件,
查了文档之后发现 \d错了,改成 \S就可以了。
\s 与任何空白字符匹配。 \w\s “ID A1.3” 中的 "D "
\S 与任何非空白字符匹配。 \s\S “int __ctr” 中的 " _"
\d 与任何十进制数字匹配。 \d “4 = IV” 中的 “4”
\D 匹配不是十进制数的任意字符。 \D “4 = IV” 中的 " "、 “=”、 " "、 “I” 和 “V”
{
string input = "31010719840402173X";
string pattern = @"(?<=[\d]{4})\d(?=[\S]{4})";
Regex rgx = new Regex(pattern);
var res = rgx.Replace(input, "*"); //一个星号就够了
Console.WriteLine(res);
}