正规用于印尼的电话号码

时间:2017-06-21 08:23:48

标签: regex

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

+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 (*)

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

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

上面的正则表达式找不到最后六个数字(用*表示)。有人能帮我吗?感谢。

1 个答案:

答案 0 :(得分:4)

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

你可以这样解决:

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

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

更简单的方法是:

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

您可以看到此版本here