Javascript 如何在每2个字符后插入一个字符?

Javascript 如何在每2个字符后插入一个字符?,javascript,regex,Javascript,Regex,我想在每两个字符后插入一个斜杠,但只针对前两个实例。以下正则表达式在每次出现后插入。有人知道如何将其限制为两次吗?用户将通过输入元素输入金额。因此,如果用户输入了30032017,则如下所示 function insertSlash(val) { return val.match(new RegExp('.{1,2}', 'g')).join("/"); } insertSlash(input); 因此,对于第一个字符,用户将输入3。在下一次输入时,它将是0。然后应该插入斜杠 然后将

我想在每两个字符后插入一个斜杠,但只针对前两个实例。以下正则表达式在每次出现后插入。有人知道如何将其限制为两次吗?用户将通过输入元素输入金额。因此,如果用户输入了
30032017
,则如下所示

function insertSlash(val) {
    return val.match(new RegExp('.{1,2}', 'g')).join("/");
}

insertSlash(input);
因此,对于第一个字符,用户将输入
3
。在下一次输入时,它将是
0
。然后应该插入斜杠


然后将返回
30/03/2017

忽略它可能不匹配

"30032017".match(new RegExp("(..)(..)(....)")).slice(1).join("/")

match返回的值是匹配组数组。第一个元素将具有完整的匹配字符串,因此需要将其切掉,以便我们可以加入。

如果知道特定字符位置,则切掉字符串会更容易:

return val.slice(0, 2) + "/" + val.slice(2, 4) + "/" + val.slice(4)

有两种方法可以做到这一点,你可以使用一个正则表达式格式化只为这种类型的字符串

函数插入斜杠(val){
返回val.replace(/^(\d{2})(\d{2})/,“$1/$2/”);
}

console.log(insertSlash('30032017')如果要将日期字符串视为实际日期,可以执行以下操作:

const dateString=“30032017”
const date=新日期(dateString.slice(4)、dateString.slice(3,4)、dateString.slice(0,2))
const formattedDateString=date.getUTCFullYear()+“/”+date.getUTCMonth()+“/”+date.getUTCDate()

log(formattedDateString)
有一件事我没有提到,因为它与一个更大的问题有关。通过用户通过输入元素输入,日期实际上是动态的。那么你怎么知道在哪里插入字符呢?你的问题是“每2个字符”。前2个实例每2个字符。你知道我的意思吗?还是应该更清楚一点?这是一个完全不同的问题。我会为查找库实现一个输入掩码:你能使用jquery吗?有很多输入掩码你可以使用,你不需要重新发明它..谷歌maskedInput。js@indubitablee不是真的。我使用的是react,它与这个问题有关-
function insertSlash(val) {
    return val.substr(0,2)+"/"+val.substr(2,2)+"/"+val.substr(4,4)
}

insertSlash('30032017');