JavaScript 表单验证,确保出生日期为 4 位数字

标签 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 输入验证 来完成此操作,但这在非现代浏览器上不起作用,因此我需要使用 JavaScript 方法。

最佳答案

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

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

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

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

关于JavaScript 表单验证,确保出生日期为 4 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30279341/

相关文章:

javascript -/bin/sh : node: command not found - in VScode, 运行 Javascript

javascript - shadow DOM 中的 addEventListener

javascript - 如何使用网站 url 查找文件夹

Java 字符串优化

java - 弦乐实习生谜题

java - 如何在java中将abc打印到zyx(alpha中的镜像值)

javascript - 这个 Angular JS 代码片段是如何工作的?

javascript - 正则表达式用于带有特定前置字符的HTML标记引号,并破坏HTML引号

python - 正则表达式匹配并提取长域

android - 正则表达式 - 电话号码 - Android