如何创建自定义电话号码正则表达式

Hai*_*ane 2 php regex

我正在使用 php 并从我的国家/地区电话号码中搜索正确的正则表达式。我不擅长正则表达式,但我对我所在国家/地区电话号码的可能模式进行了一些研究,这些模式是:

  • 71 252 254
  • 75 89 95 52
  • +216 12 21 47 58
  • 00216 12 54 11 25
  • +216 12 789 541
  • 00216 71 245 852

请帮我拯救我的一天!

Tob*_*ias 5

假设您删除了所有空格(可能还有其他无效字符):

((\+|00)216)?[0-9]{8}
Run Code Online (Sandbox Code Playgroud)

此正则表达式应匹配所有提供的示例。

更新:

这是“完整”的正则表达式。它基于维基百科文章

((\+|00)216)?(74|71|78|70|72|9|4|2|5|73|75|76|77|79)[0-9]{6}
Run Code Online (Sandbox Code Playgroud)

我不知道的是如何处理一位数的区号,也许下面的正则表达式更好:

((\+|00)216)?(74|71|78|70|72|09|04|02|05|73|75|76|77|79)[0-9]{6}
Run Code Online (Sandbox Code Playgroud)

更新 2:

最终的解决方案,这次基于另一个文档

((\+|00)216)?([2579][0-9]{7}|(3[012]|4[01]|8[0128])[0-9]{6}|42[16][0-9]{5})
Run Code Online (Sandbox Code Playgroud)