이메일처럼 Patterns.EMAIL_ADDRESS.matcher(email).matches()
이렇게 하면 되는 줄 알았는데, 아니었다. Patterns.PHONE.matcher(email).matches()
로 하면 무조건 true
가 넘어온다.
그러다 찾은게 https://github.com/googlei18n/libphonenumber 이다. 온라인으로도 만들어놔서 https://libphonenumber.appspot.com 에 가서 검사할 수 있다.


안드로이드 스튜디오용은 https://github.com/googlei18n/libphonenumber/wiki/Android-Studio-setup 이렇게 설정하면 된다.
테스트를 돌려보니 이렇게 결과가 나온다.
@Test fun checkPhoneNumber1() { val util = PhoneNumberUtil.getInstance() val country = Locale.getDefault().country assertTrue(util.isValidNumber(util.parseAndKeepRawInput("01012345678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("010-1234-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("+821012345678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("821012345678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("+8201012345678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("8201012345678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("+82 010-1234-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("82 010-1234-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("+82 10-1234-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("82 10-1234-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("010-123-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("0101235678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("101235678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("011-1234-5678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("01112345678", country))) assertTrue(util.isValidNumber(util.parseAndKeepRawInput("01612345678", country))) assertFalse(util.isValidNumber(util.parseAndKeepRawInput("12345678", country))) assertFalse(util.isValidNumber(util.parseAndKeepRawInput("010-12-5678", country))) assertFalse(util.isValidNumber(util.parseAndKeepRawInput("010125678", country))) }