jQuery Validating Australian Phone Numbers

前端 未结 3 1567
日久生厌
日久生厌 2021-01-24 22:06

I am trying to get the value from an input box, validate & format the number, then update the input field.

I want it to validate all Australian phone numbers (mobile

相关标签:
3条回答
  • 2021-01-24 22:26

    You can use the same regex/replace logic you have suggested.

    html

    Mobile:<input id = "mobile" type = "tel" maxlength=8></input>
    Landline:<input id = "landline" type = "tel" maxlength=10></input>
    

    jquery

    $("#mobile").blur(function(){
        var mobile_ele = $("#mobile");
        var mobileNum = mobile_ele.val();
        var formattedNum = mobileNum.replace(/(\d{2})(\d{3})(\d{3})/g,"04$1 $2 $3");
        mobile_ele.val(formattedNum);
    });
    $("#landline").blur(function(){
        var landline_ele = $("#landline");
        var landlineNum = mobile_ele.val();
        var formattedNum = landlineNum.replace(/(\d{2})(\d{4})(\d{4})/g,"($1) $2 $3");
        mobile_ele.val(formattedNum);
    });
    

    Demo:https://jsfiddle.net/7c0d418t/

    0 讨论(0)
  • 2021-01-24 22:33

    You can find here phone validation code for more than 200 countries: https://github.com/googlei18n/libphonenumber

    0 讨论(0)
  • 2021-01-24 22:34

    I came up with 1 solution, not convinced how optimal it is, but someone may want to elaborate on it.

        function validatePhoneNumber(phone_number){
            var formatted = "";
            //remove all non-digits
            phone_number = phone_number.replace(/\D/g,'');
            //if number starts with 61, replace 61 with 0
            if (phone_number.match(/^61/)){
                  phone_number = "0"+phone_number.slice(2);
            }
    
            if (phone_number.match(/^04/)){
                if (phone_number.length === 10){
                    var formatted = phone_number.replace(/(\d{4})(\d{3})(\d{3})/g,"$1 $2 $3");
                } else {
                    alert('Invalid phone number');
                }
            } else if (phone_number.match(/^02|03|07|08/)){
                if (phone_number.length === 10) {
                    var formatted = phone_number.replace(/(\d{2})(\d{4})(\d{4})/g,"($1) $2 $3");
                } else {
                    alert('Invalid phone number');
                }
            } else if (phone_number.length === 8){
                alert('Please use Area Code for landline numbers');
            } else {
    
                alert('Invalid phone number');
            }
            //update
            $("#phone").val(formatted);
        }
    

    DEMO: https://jsfiddle.net/kb4u536a/

    0 讨论(0)
提交回复
热议问题