印度尼西亚电话号码的正则表达式



我需要一个可以接受以下数字格式的正则表达式。

+62 361 222777
+62 813-444-5555
+62 812-3333-3333
+62 811 391 2103
+62 361-2277777
(0361) 227337
+62 8113912103
08134455555
0361-2277777 (*)
+62 812 3333 3333 (*)
+62 877 80803550 (*)
081339222111 (*)
081 339 222 111 (*)
+62 811338429196 (*)

这是我到目前为止所做的:

+62sd{3}[-.s]??d{3}[-.s]??d{3,4}|(0d{2,3})s?d+|0d{2,3}s?d{6,7}|+62s?361s?d+|+62d+|+62s?(?:d{3,}-)*d{3,5}

最后六个数字(由 * 表示(没有被我上面的正则表达式完全找到。有人可以帮助我吗?谢谢。

我的建议是尝试将问题分解为较小的问题。

你可以这样解决:

(+62 ((d{3}([ -]d{3,})([- ]d{4,})?)|(d+)))|((d+) d+)|d{3}( d+)+|(d+[ -]d+)|d+

您可以在此处查看演示。我已将问题分解为较小的问题,像这样划分()|()|...,因此您可以通过删除单个括号来查看我正在解决的情况。

更简单的方法是:

+?([ -]?d+)+|(d+)([ -]d+)

您可以在此处查看此版本。

最新更新