开发一个匹配以色列手机号码的正则表达式。目前我有以下内容:
re.compile(r'^[\(]?0?(5[023456789])\)?(\-)?\d{7}$')
它抓住了大多数用例。问题在于只有在出现第一个括号时才匹配第二个括号。
例如:(055)-5555555或(055)5555555或0555555555可匹配,但055)-5555555不能。 我知道我可以使用2个正则表达式来测试条件(如果第一个匹配成功,则测试另一个条件),但这似乎不是一个聪明的解决方案。
我猜我需要像正则表达式环视这样的东西,但不确定如何使用它,或者是否正确理解概念。
编辑:解释逻辑
区号:应以5开头,然后是单个数字(来自特定列表),在前面可能有一个零。还有可能会在括号内。 然后是一个可选的连字符, 和7个数字
澄清:如果存在另一个括号,我需要匹配两个括号,对于第一个括号而不仅仅是第二个括号,错过了这一点。
\(?
就足够了。 - Martijn Pietersh = re.compile(r'^[\(]{0,1}0?(5[023456789])\)?(\-)?\d{7}$')
- Grijesh Chauhan