我必须用'*'代替信用卡的前(n-4)个字符。
我正在使用以下三行代码。

var cardnumber = '1A2C3GF4DS84Ff';
last4digits = cardNumber.substring(cardNumber.length-4);
prevdigits  = cardNumber.substring(0, cardNumber.length-4).replace(/[0-9]/g,'*');
$cache.cardNumber.val( prevdigits + last4digits);


我只是想知道我是否可以使用正则表达式在一行代码中做到这一点。

最佳答案

前瞻性确保数字后至少剩余四个字符。换句话说,后四个字符内的数字将不匹配:

var regexp = /\d(?=....)/g;

> cardnumber.match(regexp)
< ["1", "2", "3", "4"]


替换为星号:

> cardnumber.replace(regexp, '*')
< "*A*C*GF*DS84Ff"


有关前瞻的信息为here

关于javascript - 正则表达式查找匹配项,但输入的后n个字符除外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36364125/

10-10 20:01