Javascript et expressions régulières.
Résolu
heliconius
Messages postés
539
Date d'inscription
Statut
Membre
Dernière intervention
-
heliconius Messages postés 539 Date d'inscription Statut Membre Dernière intervention -
heliconius Messages postés 539 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je bloque sur la syntaxe d'une expression régulière sous javascript.
Je me suis fait une fonction qui teste, avec une expression régulière, le format d'une date. La voici :
Ce qui veut dire :
- 2 chiffres de 0 à 9 (
- 1 fois le caractère slash (
- encore 2 chiffres de 0 à 9 (
- encore 1 fois le caractère slash (
- et 4 chiffres de 0 à 9 (
- NB :
Je suis en train de rédiger une classe PHP (mais ma question n'a rien à voir avec le PHP) qui écrira le javascript permettant de choisir l'expression régulière en fonction du TDL (Top Level Domain, i.e. le pays --fr,de,es,it,etc.--) car le format des dates varie selon les pays.
- Pour un certain nombre de pays, dont la France, le format des dates est JJ/MM/AAAA et avec cette expression régulière, le 2 juillet de cette année devra être saisi comme : 02/07/2020
- Pour d'autres pays comme l'Allemagne cette date (au format J.M.AA.) pourra être écrite telle que 2.7.20 et Noël de cette année (toujours en Allemagne) s'écrirait 25.12.20
Ceci revient à dire que pour les mois et les jours, il peut y avoir indifféremment 1 ou 2 chiffres.
Ma question : Pour les jours ou les mois du format français (JJ/MM), je peux imposer la saisie de deux chiffres (
Quelqu'un a-t-il la solution ?
Merci pour votre aide.
Je bloque sur la syntaxe d'une expression régulière sous javascript.
Je me suis fait une fonction qui teste, avec une expression régulière, le format d'une date. La voici :
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste le format d'une date (JJ/MM/AAAA ou MM/JJ/AAAA). function isDate(date) { var date, reg = new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g"); if(reg.test(date)) { return true; } else { return false; } }
Ce qui veut dire :
- 2 chiffres de 0 à 9 (
[0-9]{2})
- 1 fois le caractère slash (
[/]{1})
- encore 2 chiffres de 0 à 9 (
[0-9]{2})
- encore 1 fois le caractère slash (
[/]{1})
- et 4 chiffres de 0 à 9 (
[0-9]{4})
- NB :
^= au début,
$= à la fin
Je suis en train de rédiger une classe PHP (mais ma question n'a rien à voir avec le PHP) qui écrira le javascript permettant de choisir l'expression régulière en fonction du TDL (Top Level Domain, i.e. le pays --fr,de,es,it,etc.--) car le format des dates varie selon les pays.
- Pour un certain nombre de pays, dont la France, le format des dates est JJ/MM/AAAA et avec cette expression régulière, le 2 juillet de cette année devra être saisi comme : 02/07/2020
- Pour d'autres pays comme l'Allemagne cette date (au format J.M.AA.) pourra être écrite telle que 2.7.20 et Noël de cette année (toujours en Allemagne) s'écrirait 25.12.20
Ceci revient à dire que pour les mois et les jours, il peut y avoir indifféremment 1 ou 2 chiffres.
Ma question : Pour les jours ou les mois du format français (JJ/MM), je peux imposer la saisie de deux chiffres (
[0-9]{2}) mais pour le cas de l'Allemagne, je ne sais pas comment indiquer que la saisie peut être effectuée indifféremment avec 1 ou 2 chiffres (
[0-9]{????})
Quelqu'un a-t-il la solution ?
Merci pour votre aide.
Configuration: Windows / Firefox 52.0
A voir également:
- Javascript et expressions régulières.
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Erreur #125 javascript - Forum Mozilla Firefox
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript arrondi - Forum Javascript
Je vais choisir plutôt la solution {1,2} plutôt que moment.js (que peut-être, et même probablement, j'utiliserai à titre perso). Mais la classe PHP que j'écris a pour but d'écrire tout le javascript nécessaire (la fonction verif() : onsubmit="return verif()" et celles dont elle a besoin) à la vérification d'un formulaire qui aura été décrit dans un fichier .ini
Si le formulaire s'appelle adhésion (name="adhesion") le fichier de description sera adhesion.ini et le contenu de celui-ci pourrait ressembler à quelque chose comme ça :
La classe PHP a pour objet de lire ce fichier INI et d'écrire tout le javascript permettant d'effectuer la vérification de ce formulaire, et la vérification des champs date dépend naturellement de la valeur qui est inscrite dans , les formats date étant différents selon les pays. La classe peut être incluse dans la page et instanciée quand on en a besoin pour générer le javascript nécessaire ou elle peut être utilisée à part pour produire le javascript qu'on aura plus qu'à Copier/Coller dans la page ; ce sera au choix de l'utilisateur mais je ne veux pas être dépendant de librairies. Je fournis la classe (= un seul fichier), la personne décrit son formulaire et les vérifications souhaitées, point-barre. Pas de choses à télécharger ni à installer en plus. En revanche pour mes besoins propres, je vais regarder moment.js car tu as toujours été de bon conseil.
Mais pour l'instant, je règle la production du javascript de vérification des dates pour que la génération du code javascript de vérification de celles-ci corresponde au format du pays indiqué et ta réponse m'aide déjà beaucoup, ce dont je te remercie.
On peut continuer à discuter, si tu veux, mais je marque la question comme résolue.
En plus, ton fichier ini n'est pas vraiment valide...
Un fichier INI c'est : Section / Cle / Valeur
Quite à faire un fichier de paramétrage, utilise le format JSON
Bonne soirée et merci.
Bye.