javascript验证瑞典出生号

javascript validate swedish birthnumber

本文关键字:出生 验证 javascript      更新时间:2023-09-26

我试图对一个输入做一个简单的验证,该输入应该允许一个格式如下的数字: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;   
}

但它不起作用,我错过了什么吗?

这里有一些问题我想指出。首先,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!';
}
<form name="kontakt">
  <input name="pnr" type="text" value="991222-1111"/>
  <button type="button" onclick="calculate()">Calculate</button>
</form>