【发布时间】:2013-11-18 04:08:39
【问题描述】:
我最近开始研究 Javascript。我正在测试的是以有效格式检查 DoB。下一步将检查年龄。
我的 HTML 代码包含的内容如下
<form name="ProcessInfo" action="#" method="POST" enctype="multipart/form-data" target="_self" onsubmit="return checkForm();">
.
.
.
.
<br>
<label for="txtDOB">Date of Birth:* </label>
<input id="txtDOB" type="text" name="txtDOB" size="12">
format: ##/##/####
<br>
.
.
.
</form>
.
.
我在我的 .js 文件中做了以下操作
var errMessage = "";
function checkForm() {
validateName();
validateSurname();
carSelect();
validateDOB();
if (errMessage == "") {
} else {
alert(errMessage);
}
}
...
function validateDOB()
{
var dob = document.forms["ProcessInfo"]["txtDOB"].value;
var pattern = /^([0-9]{2})-([0-9]{2})-([0-9]{4})$/;
if (dob == null || dob == "" || !pattern.test(dob)) {
errMessage += "Invalid date of birth\n";
return false;
}
else {
return true
}
}
我尝试使用正则表达式检查它是否有效,但即使我正确输入了日期,我也总是会收到警报。以及如何分开 DD / MM / YYYY 来计算年龄?
【问题讨论】:
-
您的模式由破折号 (
-) 分隔,而不是斜线 (/)。你真正想要的是哪一个?此外,您可以将\d用作[0-9]的等效项。 -
感谢您的警告!我想使用
/并认为我正在使用它来执行/^当我将-更改为/时出现错误。 -
99/99/9999 是有效日期吗?
-
@BalusC 没有理由付出很多努力来禁止
99/99/9999。如果用户想撒谎,他仍然可以输入有效但不正确的日期。像这样的验证应该仅用于在出现拼写错误的情况下提供反馈。 -
@Ingo: 只是想给一些思考的食物;)顺便说一下,
\d应该小心用于除 JS 之外的其他语言,例如 Java/C#。也就是匹配非拉丁数字,如希伯来文、中文、波斯文等。
标签: javascript html validation