通过正则表达式提取字符串里的手机号,会误把身份证号银行卡号也解析成手机号,如何破局

我2我骄傲 2024-02-06 16:06:13

代码如下:

static void Main(string[] args)
{
    string pattern = @"1\d{10}"; // 匹配中国大陆手机号,以1开头,共11位
    string input = "Here is a phone number: 13812345678 and a bank card number: 15515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023";

    MatchCollection matches = Regex.Matches(input, pattern);

    foreach (Match match in matches)
    {
        Console.WriteLine("找到手机号: " + match.Value);
    }


    Console.ReadKey();
}

真正的手机号只有一个,但是程序会把后面一串数字也提取成切割成手机号,如何规避?

...全文
3609 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 02-06
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8062659, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
mgzhenhong 03-02
  • 打赏
  • 举报
回复

// 正反向预查, 数字前后不能是数字
string pattern = @"(?<=\D)1\d{10}(?=\D)"; // 匹配中国大陆手机号,以1开头,共11
  • 打赏
  • 举报
回复

改一下正则表达式,多匹配一下手机号后面的一个空格。


```c#
        string pattern=@"1\d{10}\D";


```

110,825

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧