正则表达式 - 如何取字符串中的电话号码?

正则表达式 - 如何取字符串中的电话号码?

问题描述:

字符串中的电话号码格式不唯一,如何只用一个正则表达式就将其取出来?
例子:

  • 我的电话是13866778899有空给我的打电话
  • 我的电话是138 6677 8899有空给我的打电话
  • 我的电话是138-6677-8899有空给我的打电话

就是手机号中间有可能会有空格存在,这样的正则该如何写呢?

是不是可以考虑把空格和- 替换成""再截取

\d{3}[\s\-]{0,1}\d{4}[\s\-]{0,1}\d{4}

或者
\d[\d\s\-]{9,}\d

java 的话在代码上帮不了你
但是思路应该都是一样
先去掉空格然后在用电话号码的正则表达式处理就是了

void trim( string &s )
{
    int index = 0;
    if ( !s.empty() )
    {
        while ( ( index = s.find( ' ', index ) ) != string::npos )
            s.erase( index, 1 );
    }
}

然后你看看这个的处理能不能帮到你把
https://blog.csdn.net/github_36344730/article/details/79757676

建议做个字符串转换,可以用字符串的替换函数replaceAll进行空格,-等特殊字符转换,然后通过手机号正则表达式/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/进行手机验证

\d\d\d.*\d\d\d\d.*\d\d\d\d 这个简单粗暴 不管你中间是什么