我试图通过确保出生日期的长度为 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/