我有一个不区分大小写的正则表达式:正则表达式:以前的声明必须mached至少1个字符
f?a?(x|csim)?(mob)?(ile\s*?)?(tel)?(e)?(phone|p|t|m)?\s*?:?\s*?(\s*?\(*?\d\)*?){8,10}
这里是我的测试案例:
我希望这些匹配:
- 电话:9555 5454
- 电话08 9555 5454
- 移动0411111 111
- 暴民0411 111 111
- 移动:(0411)111 111
- 电话:(08)9555 5454
- M0411111111
- 电话:(08)9555 5454
- 号码: (08)95 55 54 54
- T:0895555454
- 传真:(08)9555 5353
- 传真95555353
- ˚F95 55 53 53
但我不希望这些匹配
- (08)9555 5454
基本上,我想匹配我认定为电话号码的东西,但只有只有标识符。
我的正则表达式将成功地匹配前缀标识符,但由于整个事情是非贪婪的,“不匹配”的测试用例失败,因为我的正则表达式指定“匹配前缀,如果它在那里,但不要求“。
任何想法?
- 请注意:我使用Perl/PHP版本的正则表达式。
您也需要从前瞻中排除':'。不过也许是更好的解决方案,那么我的后视解决方案将会可靠地要求匹配被锚定在字符串的开头。 – pmakholm
嗨Cebjyre。非常好的想法,最后我去了这个:'(?= [^ \ s \ d \(:])f?a?(x | csim)?(mob)?(ile \ s *?)?(电话)?(e)?(电话| p | t | m)?\ s *?:?\ s *?(\ s *?\(*?\ d \)*?){8,10}'which是的,但考虑到区号的开头括号 –
是的,我注意到基于pmakholm的':'建议的parens - 包含在第一段中的描述中,但是以某种方式将它排除在实际的正则表达式之外。现在修复。 – Cebjyre