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