用于确保出生日期的JavaScript表单验证长度为4位

时间:2015-05-16 18:34:25

标签: javascript regex string forms validation

我正在努力确保一个有效的出生日期,确保它的长度为4个字符,每个字符都是一个数字。

function validateBirth() {
    var year = document.forms["myForm"]["birth_year"].value;
    if (year.match(/\A\d{4}\z/) !== null) {
      alert("Date of birth must be 4 digits");
      return false;
   }
}

我正在尝试使用JavaScript的string#match函数来搜索值中的正则表达式。在这里我们知道它必须包含4位数字,但它也不能包含任何非数字。

例如,a4b456之类的字符串无效。这就是我使用正则表达式标记\A\z分别开始和结束字符串的原因。

当我在jsconsole中测试这个函数时,它看起来像这个

var year = "1958"
year.match(/\A\d{4}\z/)
=> null

我在rubular中测试了完全相同的正则表达式,并了解到匹配。我疯了,还是我在这里找不到什么东西?

我知道我可以使用HTML Input Validation执行此操作,但这不适用于非现代浏览器,因此我需要使用JavaScript方法。

2 个答案:

答案 0 :(得分:3)

JavaScript正则表达式的字符串的开头和结尾分别为^$。 (\A\z对Ruby的开头和结尾都有效,但不适用于JavaScript。)所以这个正则表达式可以工作:

year.match(/^\d{4}$/);

如果您对布尔结果感兴趣而不是接收实际匹配,则可以改为:

/^\d{4}$/.test(year)

答案 1 :(得分:1)

没有正则表达式:

var year = +(document.forms.myForm.birth_year.value);
var yearchk = !isNaN(year) && year/1000 || 0.5;
if (yearchk >= 1 && yearchk < 10) { /** it's ok **/ }+