我试图对一个输入做一个简单的验证,这个输入应该允许一个这样的数字形成:112233-1111当我完成那个我会做到22个不能超过12和33超过31时,这就是我得到的到目前为止
var pn=document.forms.kontakt.pnr.value;
var spos=pn.indexOf("-");
var as= /^[0-9]{10}$/;
if (pn<11 || spos+4=pn.length || pn==null || pn=="")
{
alert ("Fyll i korrekt personnummer xxxxxx-xxxx");
kontakt.pnr.style.background = "red";
return false;
}
但它不起作用,我错过了什么吗?
答案 0 :(得分:0)
这里有一些问题我想指出。首先,spos+4=pn.length
应为spos+4==pn.length
(因为您正在进行比较,因此等于两倍)。 x
似乎没有定义,应该删除。您的正则表达式变量as
从未使用过。
真的,你想要做的是:
function calculate() {
//this matches 6 numbers followed by a ("-" or "+") followed by 4 more numbers
var as = /^[0-9]{6}[-+][0-9]{4}$/;
var pn=document.forms.kontakt.pnr.value;
if (as.test(pn)) {
var year = pn.substr(0,2);
var month = pn.substr(2,2);
var day = pn.substr(4,2);
//You probably need a better date checker, this is just an example
if (month <= 12 && day <= 30) {
document.body.innerHTML = 'great success!';
return;
}
}
document.body.innerHTML = 'Too bad!';
}
&#13;
<form name="kontakt">
<input name="pnr" type="text" value="991222-1111"/>
<button type="button" onclick="calculate()">Calculate</button>
</form>
&#13;