怎样使正则表达式匹配双括号不会有错误,如: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),这种情况下,匹配会错误,只能匹配出前面一个括号,而后一个括号会被丢掉。
而括号又不能不要,比如第一种情况需要匹配。
这种情况,谁能帮忙解决以下?
谢谢了~~~
...全文
194 点赞 收藏 4
写回复
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,这样应该也能匹配吧
括号需要成对出现楼主没有考虑好

我觉得可以用预搜索来写
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告