【问题标题】:jQuery Validating Australian Phone NumbersjQuery 验证澳大利亚电话号码
【发布时间】:2015-07-13 12:45:10
【问题描述】:

我正在尝试从输入框中获取值,验证并格式化数字,然后更新输入字段。

我希望它验证所有澳大利亚电话号码(手机和固定电话) 将手机号码格式化为 04XXXXXXXX 和座机号码 (0X) XXXX XXXX

var phone_number = $("#phone").val();
//validate mobile number
var formatted = phone_number.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
//replace number
$("#phone").val(formatted);

任何帮助都会很棒:)

【问题讨论】:

  • 嘿尼克只是想知道你是否设法找到解决这个问题的方法?我希望能够为此找到一个基于 jQuery 的解决方案。
  • 我最终实现了我在下面发布的功能......就像下面所说的那样,不是最佳的,但不值得花更多时间

标签: javascript jquery regex validation formatting


【解决方案1】:

您可以使用您建议的相同正则表达式/替换逻辑。

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);
});

演示:https://jsfiddle.net/7c0d418t/

【讨论】:

    【解决方案2】:

    我想出了 1 个解决方案,但不确定它的优化程度,但有人可能想详细说明一下。

        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);
        }
    

    演示:https://jsfiddle.net/kb4u536a/

    【讨论】:

      【解决方案3】:

      您可以在此处找到 200 多个国家/地区的电话验证码:https://github.com/googlei18n/libphonenumber

      【讨论】:

        猜你喜欢
        • 2015-06-04
        • 1970-01-01
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多