国際電話番号のユーザー入力を検証する必要があります。E.164によると、最大長は 15 桁ですが、最小長に関する情報は見つかりませんでした。数字のみを考慮し、プラス記号や区切り記号は考慮しません。
3 に答える
さまざまな情報源によると、E-164 形式の最小の長さは国によって異なると思います。例:
- イスラエルの場合: 電話番号の最小長 (国コードを除く) は 8 桁です。-公式ソース (国コード 972)
スウェーデンの場合: 番号の最小長 (国コードを除く) は 7 桁です。-公式ソース(国コード 46)
ソロモン諸島の場合、固定電話の場合は 5 です。-ソース(国コード 677)
... 等々。したがって、国コードを含めた最小の長さは、スウェーデンでは 9 桁、イスラエルでは 11 桁、ソロモン諸島では 8 桁です。
編集(クリーンソリューション):実際には、長さなどのさまざまなチェックを行って国際電話番号を検証する代わりに、Googleのlibphonenumberライブラリを使用できます。E164 形式の電話番号を直接検証できます。すべてが考慮され、番号が有効な E164 形式であれば、国を指定する必要さえありません。かなりいい!例を挙げる:
String phoneNumberE164Format = "+14167129018"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber phoneNumberProto = phoneUtil.parse(phoneNumberE164Format, null);
boolean isValid = phoneUtil.isValidNumber(phoneNumberProto); // returns true if valid
if (isValid) {
// Actions to perform if the number is valid
} else {
// Do necessary actions if its not valid
}
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
数値を検証している国がわかっている場合は、E164 形式は必要.parse
なく、 を渡す代わりに関数で国を指定できますnull
。
EDIT 2015-06-27: 最小値は実際には国コードを含めて 8 です。私の悪い。
元の投稿
私が使用する最小の電話番号は 10 桁です。国際ユーザーは常に国コードを入力する必要があり、私の知る限り、国コードを数えると 10 桁未満の国はありません。
詳細はこちら: https://en.wikipedia.org/wiki/Telephone_numbering_plan