我是正则表达式的新手并且有一个问题。我正在验证日期/时间文本输入,只想允许符合精确模式的字符。格式如下:
2014年3月19日凌晨2:00
显然,日期(在这种情况下为" 19")和小时(在这种情况下为#34; 2")可能是一个或两个字符长。在Javascript keyup上,我需要一个正则表达式,删除所有不完全符合此模式的字符。我怎么能用正则表达式做到这一点?这是确切的模式:
我不在乎它是一个有效的日期。我只需要输入的文字就可以适应这种格式。
感谢您的帮助!
答案 0 :(得分:1)
[A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)
将完全符合您的要求
演示:http://regex101.com/r/rU8xT0 \
与js一起使用
var str = "Mar 1, 2014 at 2:00pm";
if( /[A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)/.test(str)){
console.log("pass");
}
else{
console.log("fail");
}
这正是你想要的,这将检查不正确的值并相应地突出显示,我使用jquery来添加和删除类
$("#text").keyup(function () {
if (/[A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)/.test($(this).val())) {
$(this).removeClass('error');
$(this).addClass('good');
} else {
$(this).removeClass('good');
$(this).addClass('error');
}
})
对于js中的OP特殊要求
var str = "Mar 1, 2014 at 2:00pmaur bahut sara kachra";
var res = str.replace(/([A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)).*/, '$1');
console.log(res);
此处提示演示: http://jsfiddle.net/kq65X/1/