RegEx是否为固定位数?

时间:2014-12-12 02:02:52

标签: javascript regex digits

我正在完成一份我必须为我的作业做的表格,就在我认为我完成的时候,我发现了一个错误。

我需要一个RegEx作为输入字段,如果没有正确的13位数字,它将返回警报。

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

就在我认为自己拥有它的时候:/^$|\d{13}$/,结果是如果少于13位,它将返回警报但是如果有更多则不会返回警报,而不是/^\d{13}$/正在工作罚款14+位。

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

这是函数的其余部分:

        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'"/>

2 个答案:

答案 0 :(得分:5)

非常接近!

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

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

开始

答案 1 :(得分:0)

此外,只是match()的替代方法,使用test()

进行更快的布尔检查
if (!/^\d{13}$/.test(box.value)) {
    alert("13 numbers are required");
    document.getElementById("numbers").value = '';
}