我想要日期格式的文本。我能够设法得到2020年3月20日,但它也接受角色

如果我使用/ [^ 0-9] / gi,则在按下宪章后会立即将其删除,但正斜杠也会被删除(我需要正斜杠)。
如果我使用/ [^ 0-9] [//] / gi,那么我会得到正斜杠,但它不限制字符。

我该如何解决

function restrictAlphas(e) {

            var invalidcharacters = /[^0-9][/\/]/gi;


            var xval = document.getElementById("idcrd").value;
            var length = xval.length;


            if (length<=10){
                if (invalidcharacters.test(xval)) {
                    newVal= xval.replace(invalidcharacters, "");
                    document.getElementById("idcrd").value = newVal;

                }
                else {
                    if ((length == 2 || length == 5)) {

                        document.getElementById("idcrd").value = xval + '/';
                    }
                }
        }




        }


HTML:

 <input type ="text"  name="crd" id="idcrd" maxlength="10" onkeyup="return restrictAlphas(event)"  />

最佳答案

function restrictAlphas(e) {
     e.target.value = e.target.value.replace(/[\D]/g, '').replace(/(\d{2})/, "$1/").replace(/(\d{2}\/\d{2})/, "$1/");
}

 <input type ="text"  name="crd" id="idcrd" maxlength="10" oninput="restrictAlphas(event)"  />

07-28 11:41