繁体   English   中英

JavaScript表单验证可确保生日为4位数字

[英]JavaScript form validation for ensuring a date of birth is 4 digits long

我正在尝试通过确保它的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方法。

JavaScript正则表达式的字符串开头和结尾分别是^$ \\A\\z对于Ruby中的开始和结束有效,但对JavaScript无效。)因此,此正则表达式将起作用:

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

如果您对布尔结果感兴趣,而不是收到实际的匹配结果,则可以这样做:

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

没有正则表达式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM