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