Регулярное выражение для формата AM PM для jquery
Меня расстраивает регулярное выражение для маскировки поля ввода. Я хочу ограничить ввод в формате hh: mm AM | PM, и я не могу заставить это регулярное выражение работать.
Я использую это регулярное выражение в сочетании с инструментом jquery из www.ThimbleOpenSource.com
. Это был инструмент filter_input.js или что-то еще.
Кажется, что это работает для простого регулярного выражения, но тот, с которым я пришел, не работает. Это моя тестовая ссылка jsFiddle ниже.
jsFiddle
Ответы
Ответ 1
Я сделал пример jsfiddle, основанный на регулярном выражении ответа Юрия:
http://jsfiddle.net/Evaqk/
$('#test1, #test2').blur(function(){
var validTime = $(this).val().match(/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/);
if (!validTime) {
$(this).val('').focus().css('background', '#fdd');
} else {
$(this).css('background', 'transparent');
}
});
Ответ 2
Прежде всего, если вы используете его для поля ввода, вы никогда не должны позволять пользователям вводить дату или время с помощью текстовых полей и надеяться, что он будет в строгом формате.
Но если вы настаиваете:
/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/
Это регулярное выражение будет проверять время в формате AM/PM.
Ответ 3
Вы не можете сделать это с помощью этого плагина, потому что здесь вам нужно проверить каждый символ.
HTML:
<form>
<p>When?</p>
<input type="text" id="test1" placeholder="hh:mm(AM|PM)"/>
</form>
JavaScript:
$("#test1").keypress(function(e) {
var regex = ["[0-2]",
"[0-4]",
":",
"[0-6]",
"[0-9]",
"(A|P)",
"M"],
string = $(this).val() + String.fromCharCode(e.which),
b = true;
for (var i = 0; i < string.length; i++) {
if (!new RegExp("^" + regex[i] + "$").test(string[i])) {
b = false;
}
}
return b;
});
Пример
Ответ 4
Итак, я почти уверен, что это разрешено к настоящему времени, но я недавно боролся с этим и не мог найти ответ достаточно быстро. Я использую Bootstrap Validator (bootstrapvalidator.com by @nghuuphuoc) вместе с Eonasdan DateTimepicker для проверки часа (PS: вы можете отключить дату в плагине Eonasdan).
Так как Bootstrap Validator еще не имеет валидатора для времени, вы должны использовать Regex. Это отлично работало для меня:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9] [APap][mM]$
Ответ 5
значение возвращаемой функции return (true/false)
function CheckTime(HtmlInputElement) {
var dt = HtmlInputElement.value;
return (/(0?[1-9]|1[0-2]):[0-5][0-9] ?[APap][mM]$/.test(dt));
}
Ответ 6
Проверьте это решение.
<!DOCTYPE html>
<html>
<body>
<p>This demo used to validate time with 12 hours format</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var regexp = /^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/;
var res = regexp.test('12:00 AM'); //try with alphabets or wrong format
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>