正则表达式用于固定位数

RegEx for fixed number of digits?

本文关键字:定位 用于 正则表达式      更新时间:2023-09-26

我正在完成一个我必须为家庭作业做的表格,就在我以为我已经完成了的时候,我发现了一个错误。

我需要一个用于输入字段的正则表达式,如果不是正好 13 位数字,它会返回警报。

虽然我知道正确的正则表达式是:/^'d{13}$/,但我还需要它来忽略一个空字段。(因为我不希望在用户切换到其他输入字段时触发警报)

就在我以为我有它的时候:/^$|'d{13}$/ ,事实证明,如果少于 13 位数字,它会返回警报,但如果有更多数字,则不会返回警报,这与 14+ 位数字正常工作/^'d{13}$/不同。

有人可以帮助我解决这个问题吗?谢谢

以下是函数的其余部分:

        function checkNum(box) {
        var re= new RegExp(/^$|'d{13}$/);
        if(!box.value.match(re)) {
            alert("13 numbers are required");
            document.getElementById("numbers").value = '';
        }
    }

这是输入字段:

<input type="text" name="numbers" id="numbers" placeholder="Numbers" onFocus="this.placeholder=''" onBlur="checkNum(this); this.placeholder='Numbers'"/>

非常接近!

/^$|^'d{13}$/

您只是忘记指定 13 位数字从字符串的开头开始

此外,只是 match() 的替代方法,为了更快地进行布尔检查,请使用test()

if (!/^'d{13}$/.test(box.value)) {
    alert("13 numbers are required");
    document.getElementById("numbers").value = '';
}