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
相关产品推荐
相关产品推荐

