Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 固定位数的正则表达式?_Javascript_Regex_Digits - Fatal编程技术网

Javascript 固定位数的正则表达式?

Javascript 固定位数的正则表达式?,javascript,regex,digits,Javascript,Regex,Digits,我正在完成一张我必须做的家庭作业表格,就在我以为我完成的时候,我发现了一个错误 我需要一个输入字段的正则表达式,如果不是13位,它将返回一个警报 虽然我知道正确的RegExp是:/^\d{13}$/,但我还需要它忽略一个空字段。(因为我不希望在用户切换到其他输入字段时触发警报) 就在我认为我已经拥有它的时候:/^$|\d{13}$/,结果是,如果少于13位,它将返回警报,但如果多于13位,则不会返回警报,这与14位以上的/^\d{13}$/不同 有人能帮我解决这个问题吗?谢谢 下面是函数的其余部

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

我需要一个输入字段的正则表达式,如果不是13位,它将返回一个警报

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

就在我认为我已经拥有它的时候:
/^$|\d{13}$/
,结果是,如果少于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()


这是另一条路线<代码>^(\d{13})$太好了。成功了。谢谢我刚刚习惯了JS。
/^$| ^\d{13}$/
针对空字符串
'
测试返回true。@Franch“我还需要它来忽略一个空字段”-来自问题
if (!/^\d{13}$/.test(box.value)) {
    alert("13 numbers are required");
    document.getElementById("numbers").value = '';
}