web-dev-qa-db-fra.com

Regex pour AM PM format d'heure pour jquery

Je suis frustré par une expression régulière masquant le champ de saisie. Je veux limiter l'entrée au format hh: mm AM | PM et je ne parviens pas à obtenir cette regex au travail. 

J'utilise cette expression régulière en conjonction avec un outil jQuery de www.ThimbleOpenSource.com. C'était l'outil filter_input.js ou autre. 

Cela semble fonctionner pour une expression régulière simple, mais celle que j'ai créée ne semble pas fonctionner. Ceci est mon lien de test jsFiddle ci-dessous.

jsFiddle

15
SoftwareSavant

J'ai créé un exemple avec jsfiddle, basé sur l'expression régulière de la réponse de von Yuri: 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');
    }
});
26
Armin

Vous ne pouvez pas faire cela avec ce plugin car ici vous devez vérifier chaque personnage.

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;
});

Exemple

2
noob

Tout d'abord, si vous l'utilisez pour le champ de saisie, vous ne devez jamais permettre aux utilisateurs de saisir des informations de date ou d'heure à l'aide de champs de texte, en espérant que leur format sera strict.

Mais si vous insistez:

/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/

Cette expression régulière validera l'heure au format AM/PM.

2
YuS

Donc, je suis à peu près sûr que le problème est résolu, mais je me suis récemment heurté à ce problème et je n'ai pas trouvé de réponse assez rapidement. J'utilise Bootstrap Validator (bootstrapvalidator.com de @nghuuphuoc) conjointement avec DateTimepicker d'Eonasdan pour valider une heure (PS: vous pouvez désactiver la date dans le plug-in d'Eonasdan). 

Comme Bootstrap Validator n’a pas encore de validateur, vous devez utiliser un regex. Celui-ci a parfaitement fonctionné pour moi:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9] [APap][mM]$

1
anngelfra

Vérifiez cette solution aussi.

<!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>
0
Ajay2707

la fonction suivante renvoie (true/false) valeur

    function CheckTime(HtmlInputElement) {
       var dt = HtmlInputElement.value;
       return (/(0?[1-9]|1[0-2]):[0-5][0-9] ?[APap][mM]$/.test(dt));
}
0
Malek Tubaisaht