Подтвердить что ты не робот

Регулярное выражение для формата AM PM для jquery

Меня расстраивает регулярное выражение для маскировки поля ввода. Я хочу ограничить ввод в формате hh: mm AM | PM, и я не могу заставить это регулярное выражение работать.

Я использую это регулярное выражение в сочетании с инструментом jquery из www.ThimbleOpenSource.com. Это был инструмент filter_input.js или что-то еще.

Кажется, что это работает для простого регулярного выражения, но тот, с которым я пришел, не работает. Это моя тестовая ссылка jsFiddle ниже.

jsFiddle

4b9b3361

Ответ 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>