msisdn.py 485 Bytes
import re


REGEX_ONLY_CONTAIN = re.compile('([0-9\+\- ]*)')


def get_msisdn(msisdn, country='+62'):
    match = REGEX_ONLY_CONTAIN.search(msisdn)
    if not match or match.group(1) != msisdn:
        return
    clean = msisdn.replace(' ', '').replace('-', '')
    length = len(clean)
    if length < 7 or length > 16:
        return
    try:
        int(clean)
    except ValueError:
        return
    if clean[0] == '+':
        return clean
    return country + clean.lstrip('0')