我正在尝试找到一种最好的方法来测试字符串是否符合当前的标准。基本上,我的约会是这样的:
1/17/2013 12:00 AM月份和日期字段可以是一位或两位数字,而年份始终是四位数字。小时可以是一位数或两位数。分钟字段始终为两位数,例如,这也适用:
10/1/2013 1:00 AM现在,我有这个正则表达式,但它似乎不起作用:
/^(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])\/(20[1-9][2-9]) (0[1-9]|1[0-2]):([0-5][0-9]) (am|pm)$/我是这样使用它的:
$('input[name=targetMe]').each( function() {
alert('start')
if(/^(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])\/(20[1-9][2-9]) (0[1-9]|1[0-2]):([0-5][0-9]) (AM|PM)$/.test($(this).val())) {
alert('passes')
} else {
alert('dont')
}
});我当前的正则表达式是否有问题,或者我应该以另一种方式使用它,或者有比这更好的解决方案吗?
发布于 2013-01-03 22:14:48
好了,这是我找到的最终解决方案,它结合了我在这里收到的所有优秀的输入!
$('input[name=targetMe]').each( function() {
alert('start')
if(/^([1-9]|1[0-2])\/([1-9]|[1-2][0-9]|3[0-1])\/(19[0-9][0-9]|20[0-9][2-9]) (0[1-9]|1[0-2]):([0-5][0-9]) (am|pm|AM|PM)$/.test($(this).val())) {
alert('passes')
} else {
alert('dont')
}});
这将接受1900年代或2000年代的任何数字,以及几天和几个月的个位数和两位数。
发布于 2013-01-03 20:49:18
我相信你可以在Javascript中使用parse方法:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/parse
因此,它将类似于:
$('input[name=targetMe]').each( function() {
alert('start')
if(Date.parse($(this).val())) {
alert('passes')
} else {
alert('dont')
}
});发布于 2013-01-03 20:49:25
尝试:
/^(0?[1-9]|1[0-2])\/(0?[1-9]|[12]\d|3[01])\/(20[1-9]\d) (0?[1-9]|1[0-2]):([0-5]\d) ([AP]M)$/请注意,这与2010 (包括)2010到2099年之间的任何年份都匹配。您的正则表达式意味着您只需要2012-2099年之间的年份,在这种情况下,可以使用类似20(1[2-9]|[2-9]\d)的内容
https://stackoverflow.com/questions/14139226
复制相似问题