You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则表达式空格问题:手机号验证匹配失败求助

解决手机号格式匹配的正则问题

嘿,我来帮你搞定这个手机号正则匹配的问题!

你之前的正则能匹配没有空格的格式,但要支持(xx) xxxxx-xxxx里的空格,关键是要在括号结束后、5位数字前加入空格的匹配规则。

正确的正则表达式

你可以试试这个:

return telefone.matches("\\(([10]|[1-9][0-9])\\)\\s?\\d{5}-\\d{4}");

各部分说明:

  • \\(([10]|[1-9][0-9])\\):这部分和你原来的一样,负责匹配带括号的两位区号,比如(11)、(05)都能正常匹配
  • \\s?:这里的\\s匹配任意空白字符(包括空格),?表示这个空格是可选的——也就是说不管用户输入时有没有空格,都能匹配。如果要求空格是必须的,把\\s?改成\\s就行
  • \\d{5}-\\d{4}:和原来一致,匹配5位数字+横杠+4位数字的号码部分

如果担心用户可能输入多个空格(比如不小心按了好几次空格),可以把\\s?换成\\s*(匹配0个或多个空格)或者\\s+(匹配1个或多个空格),根据你的实际需求调整。

举几个测试例子:

  • 匹配成功的情况:(11)98765-4321、(02) 12345-6789、(33) 54321-9876(如果用\\s*的话)

内容的提问来源于stack exchange,提问作者Lucas Poke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:39:51