如何用jQuery替换一些带有“x”的字符?

时间:2017-03-25 05:14:59

标签: javascript jquery replace

我正在开发一个Magento项目,在客户仪表板中,有一个字段在巴西,这是我们的联邦ID,称为“CPF”(最初来自Magento,它叫增值税),我插入了一个IF来检查如果客户在其帐户页面上并添加“已禁用”属性。只是为了更专业,而不是显示所有数字,我想用“x”替换一些数字。 CPF格式如下(这是一个假数字,只是为了说明):

168.828.835-05

我想只显示前三位数字和最后两位数字,将中间的数字替换为“x”,所以:

168.xxx.xxx-05

我创建了一个函数来获取输入值的长度并为每个值应用不同的替换,但它不起作用。看看:

function mask_vat(inputID) {
    var mystr = document.getElementById(inputID).value;
    var str_length = mystr.length;
    var pattern, replacement;
        switch(str_length) {
            case 14:
                pattern = '/^(\d{3}).\d{3}.\d{3}-(\d{2})$/';
                replacement = '$1.XXX.XXX-$2';
                break;
            case 18:
                pattern = '/.\d{3}.\d{3}\//';
                replacement = '.xxx.xxx/';
                break;
        }
    mystr.replace(pattern, replacement);
}

函数有什么问题??

4 个答案:

答案 0 :(得分:2)

我不明白为什么你需要jQuery来操作一个字符串,你可以尝试这个函数:

function maskWithX (str) {
    return str.replace(/\.\d{3}\.\d{3}-/, ".xxx.xxx-");
}

答案 1 :(得分:1)

[假设输入数字是固定长度]

您可以使用下面的此功能来完成您想要的任务。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   static/images/kb-icon-arrow-1.svg
    modified:   static/images/kb-icon-arrow-2.svg

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   app.yaml
    modified:   pytz/__init__.pyc
    modified:   pytz/exceptions.pyc
    modified:   pytz/tzfile.pyc
    modified:   pytz/tzinfo.pyc

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .idea/

答案 2 :(得分:1)

您可以使用以下RegEx替换程序:

// Replace '168.828.835-05' with CPF value
'168.828.835-05'.replace(/^(\d{3}).\d{3}.\d{3}-(\d{2})$/,'$1.XXX.XXX-$2')

或(如果段具有可变长度)

// Replace '168.828.835-05' with CPF value
'168.828.835-05'.replace(/.\d+.\d+-/,'.XXX.XXX-')

例如:

function maskCPF(cpf) {
    return cpf.replace(/^(\d{3}).\d{3}.\d{3}-(\d{2})$/,'$1.XXX.XXX-$2');
}

maskCPF('168.828.835-05');

如果您要在PHP中使用服务器端:

<?php
    $cpf = '168.828.835-05';
    $pattern = '/^(\d{3}).\d{3}.\d{3}-(\d{2})$/';
    $replacement = '$1.XXX.XXX-$2';
    $masked_cpf = preg_replace($pattern, $replacement, $cpf);
?>

答案 3 :(得分:0)

这里是逻辑

SqlAdapter