我正在尝试通过确保它的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
将无效。这就是为什么我使用regex标记\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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句