Javascript出生日期难题
Javascript date of birth conundrum
我需要验证原始出生日期字段输入,格式为:
"唔�
其中字符串的前 3 个字符必须是一年中月份可接受的 3 个字母缩写。它可以是小写的,也可以是大写的,或者混合的,只要它拼写出jan或feb或mar等。据我所知,没有内置方法具有一个月这种特定格式的现成数组,以便能够与用户输入进行比较。我在想我也许可以在 for 循环中使用 localeCompare()
方法来测试输出是否为 0,然后相应地附加错误消息。
function dateTester() {
var d = new Date(),
i,
mo = [],
moIsValid;
for (i = 0; i < 12; i += 1) {
d.setMonth(i);
mo.push(d.toLocaleString().split(' ')[1].substr(0, 3));
}
return new RegExp('^(' + mo.join('|') + ')', 'i');
}
var moIsValid = dateTester();
alert(moIsValid.test('fEb1992'));
如果您不希望用户当天的当前区域设置名称有效,则只需toLocaleString()
切换到 toString()
。但是,你为什么不这样做呢:
var moIsValid = /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i;
alert(moIsValid.test('fEb1992'));
我喜欢这个简洁的函数来验证你的输入:
var months = "janfebmaraprmayjunjulaugsepoctnovdec";
function validate(dateString) {
return dateString.length == 7 &&
!(months.indexOf(dateString.substr(0,3).toLowerCase()) % 3) &&
isFinite(dateString.substr(3));
}
http://jsfiddle.net/gilly3/NR3aG/
除非你真的真的想用"动态"测试检查一个月,否则你可以做:
var months = 'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec';
months.indexOf('JaN1975'.toLowerCase().substring(0,3)
检查:
console.log(months.indexOf('JaN1975'.toLowerCase().substring(0,3)) != -1);
console.log(months.indexOf('oct1975'.toLowerCase().substring(0,3)) != -1);
console.log(months.indexOf('FEB1975'.toLowerCase().substring(0,3)) != -1);
console.log(months.indexOf('Ja1975'.toLowerCase().substring(0,3)) != -1);
console.log(months.indexOf('091975'.toLowerCase().substring(0,3)) != -1);
http://jsfiddle.net/ELMFu/
给:
true
true
true
false
false
new Date(str.replace(/('D+)('d+)/, "1 $1 $2"))
编辑:使用isNaN
测试日期是否解析失败。
相关文章:
- Javascript出生日期难题
- 如何在出生日期下拉列表中设置开始年份
- 我需要让用户输入他的出生日期,并使用javascript检查其形式是否正确.我的代码不起作用
- 如何根据当前时间从当前年龄计算出生日期
- jQuery在多个文本字段中验证出生日期
- 如何在日期选择器中给出出生日期验证
- 如何使用jquery验证器的日期月年三个文本框验证出生日期
- 用于调查的 Javascript:从页面加载时从出生日期开始计算年龄 从预填充信息加载
- 如何在日历中选择出生日期
- 在 JavaScript 中计算/检查出生日期小于 110 岁
- JavaScript 中的出生日期验证
- 如何在Microsoft CRM 2011中根据出生日期计算年龄(以年和月为单位)
- 在javascript中验证出生日期
- 对出生日期SELECT进行编程
- 如何使用Jquery.ui.datepicker.css验证出生日期和死亡日期文本框
- 在DOM中查找出生日期
- 根据出生日期计算年龄,日期格式为年月日
- 如何在JavaScript中计算出生日期和系统日期之间的差值
- ASP.Net:三个下拉菜单和使用javascript的出生日期选择验证
- 将出生日期转换为Javascript日期