怎样使正则表达式匹配双括号不会有错误,如:static const char strPhoneNumber[] = "(\\(?[0-9]{3,}\\)?([._\\- ]?[0-9]+){2,})";

iamlijiajia 2007-12-10 03:03:00
static const char strPhoneNumber[] = "(\\(?[0-9]{3,}\\)?([._\\- ]?[0-9]+){2,})";
这个正则表达式在匹配电话号码的时候,有一个问题:
如电话号码:(028)86896960, 这样的格式,是能够匹配正确的,但是另外一种格式,如:
(86896960),这种情况下,匹配会错误,只能匹配出前面一个括号,而后一个括号会被丢掉。
而括号又不能不要,比如第一种情况需要匹配。
这种情况,谁能帮忙解决以下?
谢谢了~~~
...全文
221 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamlijiajia 2007-12-10
  • 打赏
  • 举报
回复
这个也不对,变成必须有括号才匹配了,我需要的是括号可有可无,但必须成对出现~~~
iamlijiajia 2007-12-10
  • 打赏
  • 举报
回复
\\(? [0-9]{3,} \\)? ([._\\-]?[0-9]+){2,}
大家帮忙看一下,这么改行不行?
\\((?=\\)) [0-9]{3,} \\)? ([._\\-]?[0-9]+){2,}
iamlijiajia 2007-12-10
  • 打赏
  • 举报
回复
楼上地说得对,我就是遇到了你说的那种情况,正想办法解决
预搜索?不大了解~~~~学习以下先。如果哪位对这方面了解,麻烦指导一下,谢了先~~
believefym 2007-12-10
  • 打赏
  • 举报
回复
楼主这个写得有问题的
\\(?
\\)?
你这样的话,出现比如(021-1234567890,这样应该也能匹配吧
括号需要成对出现楼主没有考虑好

我觉得可以用预搜索来写

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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