Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何用“替换某些字符”;x";用jQuery?_Javascript_Jquery_Replace - Fatal编程技术网

Javascript 如何用“替换某些字符”;x";用jQuery?

Javascript 如何用“替换某些字符”;x";用jQuery?,javascript,jquery,replace,Javascript,Jquery,Replace,我正在从事一个Magento项目,在客户仪表板中,有一个字段,在巴西,它是我们的联邦ID,名为“CPF”(最初来自Magento,名为VAT),我插入了一个IF,以检查客户是否在其帐户页面上,并添加一个“禁用”属性。为了更专业,我想用“x”代替一些数字,而不是显示所有数字。CPF格式如下所示(这是一个假数字,仅用于说明): 168.828.835-05 我只想显示前三位数字和最后2位数字,中间用“X”代替数字,所以: 168.xxx.xxx-05 我创建了一个函数来获取输入值的长度,并为每个值应

我正在从事一个Magento项目,在客户仪表板中,有一个字段,在巴西,它是我们的联邦ID,名为“CPF”(最初来自Magento,名为VAT),我插入了一个IF,以检查客户是否在其帐户页面上,并添加一个“禁用”属性。为了更专业,我想用“x”代替一些数字,而不是显示所有数字。CPF格式如下所示(这是一个假数字,仅用于说明):

168.828.835-05

我只想显示前三位数字和最后2位数字,中间用“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);
}

函数中有什么错误???

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

您可以使用下面的功能来完成所需的操作

   function changetToX(input) {
     return input.substring(0, 3) + 'xxx.xxx-' + input.substring(input.length - 2);
    }

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

您可以使用下面的功能来完成所需的操作

   function changetToX(input) {
     return input.substring(0, 3) + 'xxx.xxx-' + input.substring(input.length - 2);
    }

您可以使用以下正则表达式替换程序:

// 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')
或(如果线段长度可变)

例如:

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

您可以使用以下正则表达式替换程序:

// 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')
或(如果线段长度可变)

例如:

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

我不明白为什么需要jQuery来操作字符串,您可以尝试以下功能:

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

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

function maskWithX (str) {
    return str.replace(/\.\d{3}\.\d{3}-/, ".xxx.xxx-");
}
这里是逻辑

var replaccelength= str.substring(4,str.length-3).length;
alert(str.substring(0, 4) + Array(replaccelength).join("x") + str.substring(str.length-3));
这里是逻辑

var replaccelength= str.substring(4,str.length-3).length;
alert(str.substring(0, 4) + Array(replaccelength).join("x") + str.substring(str.length-3));


在所有情况下,数字长度都是固定的。?实际上不是。请看我的编辑。是不是所有情况下的数字长度都是固定的。?实际上不是。请参阅我的编辑。函数的参数是我输入的ID还是名称?您将使用此函数作为
changeToX('168.828.835-05')
;函数的参数是我输入的ID还是名称?您将使用此函数作为
changeToX('168.828.835-05')
;没什么特别的,我只是习惯于使用jQuery,所以我不知道纯js…@joaogdesigner jQuery没有真正的字符串操作函数,所以你需要使用内置的“原生”js函数。没什么特别的,我只是习惯于使用jQuery,所以我不知道纯js…@joaogdesigner jQuery没有真正的字符串操作函数,所以你需要使用内置的“native”js函数。太好了,我会试试。只是一个问题:在客户端这样做安全吗?在服务器端使用这个掩码会更好吗,比如使用PHP?@joaogdesigner:服务器端肯定会更好。这就是我的想法。即使这个问题是用jquery标记的,您知道如何在PHP中实现它吗?工作起来很有魅力!也许我将不得不接受另一种数字格式,即公司ID,因为“CPF”是针对个人的。公司ID(此处称为“CNPJ”)的格式为:00.000.000/0001-00。可能会使用不同的模式,我的意思是00.xxx.xxx/xxxx-00?我会数一数db中的字符,以确定是CPF还是CNPJ,然后应用该模式。当然。你可以尝试不同格式的不同模式。太好了,我会试试的。只是一个问题:在客户端这样做安全吗?在服务器端使用这个掩码会更好吗,比如使用PHP?@joaogdesigner:服务器端肯定会更好。这就是我的想法。即使这个问题是用jquery标记的,您知道如何在PHP中实现它吗?工作起来很有魅力!也许我将不得不接受另一种数字格式,即公司ID,因为“CPF”是针对个人的。公司ID(此处称为“CNPJ”)的格式为:00.000.000/0001-00。可能会使用不同的模式,我的意思是00.xxx.xxx/xxxx-00?我会数一数db中的字符,以确定是CPF还是CNPJ,然后应用该模式。当然。您可以针对不同的格式尝试不同的模式。