格式化美国运通卡信用卡

时间:2016-10-21 05:48:04

标签: javascript jquery regex

我正在使用以下代码格式化信用卡,而用户正在输入数据。我的要求是以4 6 5格式格式化美国运通信用卡,并以4 4 4 4格式休息。问题是在输入所有15位数字之前,不会发生美国运通卡格式化。一旦用户进入第5个字符,就会发生其他验证。如果在美国运通卡的情况下如何实现呢?

if(result.card_type.name == 'amex' )
{
    $(this).val(function(i, v){
        /*   var v = v.replace(/[^\d]/g, '').match(/.{1,4}/g); */
        var v = v.replace(/\b(\d{4})(\d{6})(\d{5})\b/, '$1 $2 $3');
        return v;
    }); 
}
else{
    $(this).val(function(i, v){
        var v = v.replace(/[^\d]/g, '').match(/.{1,4}/g);
        return v ? v.join(' ') : '';
    });  
}

1 个答案:

答案 0 :(得分:0)

$(this).val(function(i, v){ v = v.replace(/\b(\d{4})/, '$1-'); v = v.replace(/-(\d{6})/, '-$1-'); return v; }); 将在找到4 + 6 + 5个digets时匹配

试试这个

{{1}}

https://jsfiddle.net/zgpwmmjy/