How to build regex for complex Indonesian phone number format?

心不动则不痛 提交于 2020-01-05 05:58:10

问题


Recently, i am using regexpal to build this custom regex. I am working with several test case for Indonesian phone number.

Here an example for the simple one 08xx-3456-7890 or 08xx34567890

but it can be a bit confusing if i get this following format

here is my phone (08xx)34567890
08xx.3456.7890
08xx 3456 7890
(+62) 8xx34567890
(+62) 8xx-3456-7890
+628xx34567890
+62-8xx-3456-7890
+628xx 3456 7890

here is regex i have done with (08|628|62)[\s\)\-]*(\s|(\d){3,}) but i can not cover all of those sample.

+62 is country code

Can you please help me with any solution to validate those format?

the phone number is possible contains string instead just number, because it is part of sentence


回答1:


You can try to remove tokens first with regex [().- ] and replace with empty string. Then you can use (?:\+62)?0?8\d{2}(\d{8}) to match a phone number. This matches an optional +62, an optional 0, 8, two digits (xx) and the phone number: 8 digits. Group 1 contains the phone number.




回答2:


For Indonesian phone numbers, this roughly should work.

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

To see it in action: https://regex101.com/r/qtEg6H/3

Also see the answer in the comment below for a more efficient way.




回答3:


// MARK: - Validate Indonesia Mobile Number Without Country Code //The number should be start by 8 digit character

class func validateMobileNumber(_ number: String) -> Bool {
    let numberRegEx = "[8][0-9]{10,14}"
    let numberTest = NSPredicate(format: "SELF MATCHES %@", numberRegEx)
    if numberTest.evaluate(with: number) == true {
        return true
    }
    else {
        return false
    }
}


来源:https://stackoverflow.com/questions/41536267/how-to-build-regex-for-complex-indonesian-phone-number-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!