Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Théme de la semaine : Les REGEX

Regex mot de passe en JavaScript et PHP : guide complet

Temps de lecture estimé : 8 minutes
Accueil PHP 8 Regex mot de passe en JavaScript et PHP : guide complet

Vous développez un site web, un formulaire d’inscription ou une page de connexion, et vous commencez à entendre parler de regex mot de passe. Tout le monde semble trouver ça logique… sauf vous. Et c’est normal. Les expressions régulières sont réputées pour être effrayantes au premier regard, presque comme une langue secrète réservée aux développeurs pros.

  • Comprendre clairement comment fonctionnent les regex et enfin savoir les utiliser pour vérifier des mots de passe.
  • Apprendre à sécuriser un formulaire avec des exemples concrets en JavaScript et en PHP, tout en restant à l’aise même en tant que débutant.
  • Éviter les erreurs courantes et adopter de bonnes pratiques pour construire une validation fiable, professionnelle et rassurante pour les utilisateurs.

Pourtant, rassurez-vous. Avec des explications simples, des exemples concrets et un peu de patience, vous allez comprendre non seulement comment fonctionne une regex de mot de passe, mais surtout comment les utiliser correctement en JavaScript et en PHP. Vous saurez valider un mot de passe côté client, côté serveur, éviter les erreurs classiques et construire une validation propre, fiable et professionnelle.

Je vous accompagne pas à pas avec une approche pensée pour les débutants… mais utile aussi pour les développeurs plus expérimentés qui veulent consolider leurs bases.

Comprendre ce qu’est une regex de mot de passe

Avant de plonger dans le code, il faut comprendre ce que signifie réellement cette fameuse regex mot de passe. Regex est l’abréviation de regular expression, ou expression régulière en français. Concrètement, une regex sert à vérifier qu’une chaîne de texte respecte une forme précise. Cela peut servir pour un email, un numéro de téléphone, une URL… et bien sûr pour un mot de passe.

Quand vous validez un mot de passe, vous voulez imposer certaines règles. Par exemple :

  • Vous souhaitez peut-être obliger l’utilisateur à mettre au moins une lettre majuscule.
  • Vous voulez probablement au moins une lettre minuscule.
  • Vous avez besoin d’un chiffre.
  • Vous pouvez même exiger un caractère spécial.
  • Et bien sûr, une longueur minimale.

Une regex mot de passe permet d’exprimer toutes ces règles dans une seule phrase “mathématique”, courte mais puissante, que JavaScript ou PHP va comprendre et appliquer. C’est exactement pour cela que les regex js et les regex php sont si souvent utilisées dans le développement web.

Pourquoi valider un mot de passe avec une regex ?

On pourrait penser que c’est juste une histoire de confort. En réalité, c’est une question de sécurité. Plus un mot de passe est simple, plus il peut être piraté. Sans règle, certains utilisateurs mettraient encore “123456”, “azerty” ou “motdepasse” sans réfléchir.

Pendant un accompagnement d’un développeur débutant, celui-ci m’explique très sérieusement que son mot de passe préféré était “soleil”. Pourquoi ? Parce qu’il “l’aime bien et qu’il le retient facilement”. Malheureusement, les pirates aussi le retiennent très facilement. Après lui avoir montré combien il était simple de deviner ce genre de mot de passe, il n’a plus jamais pris cette question à la légère. Vous voyez, parfois, ce n’est pas de la mauvaise volonté… juste de la naïveté. D’où l’importance d’imposer des règles claires avec une bonne regex mot de passe.

Pour en savoir plus sur la sécurité :

Définir une règle claire avant d’écrire la regex

Une erreur fréquente consiste à chercher une regex sur Internet sans même définir la règle souhaitée. Pourtant, c’est la première étape. Une regex n’est qu’un outil. Vous devez d’abord savoir ce que vous voulez exactement.

Prenons une règle courante, simple mais déjà solide. Nous allons valider un mot de passe qui doit :

  • Faire au moins 8 caractères
  • Contenir au moins une majuscule
  • Contenir au moins une minuscule
  • Contenir au moins un chiffre
  • Contenir au moins un caractère spécial

C’est une règle classique, parfaitement adaptée pour de nombreux sites web. Maintenant que cette règle est définie, nous pouvons écrire notre regex mot de passe.

Une regex complète pour mot de passe

Voici une regex que nous allons utiliser comme base d’apprentissage. Vous allez la voir souvent dans des projets professionnels.

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$

Elle peut paraître violente au premier regard, mais ne vous inquiétez pas, nous allons la décortiquer calmement, pour que vous la compreniez vraiment.

  • Le symbole ^ signifie “commencer au début du mot”.
  • Le symbole $ signifie “fin du mot”.

Entre les deux, nous imposons des conditions.

  • Le morceau (?=.*[a-z]) signifie qu’il doit y avoir au moins une lettre minuscule.
  • Le morceau (?=.*[A-Z]) impose au moins une majuscule.
  • Le morceau (?=.*\d) demande au moins un chiffre.
  • Le morceau (?=.*[\W_]) impose un caractère spécial ou underscore.
  • Enfin, .{8,} indique que le mot de passe doit contenir au minimum 8 caractères.

Vous voyez, ce n’est finalement qu’un ensemble de petites règles, enfermées dans une seule expression.

Pour ceux qui débutent avec les RegEx : Regex pour débutant : comprendre ces “expressions bizarres”

Utiliser une regex mot de passe en JavaScript

Parlons maintenant de regex js. En JavaScript, l’utilisation d’une regex pour mot de passe est très simple. Vous pouvez l’utiliser directement dans une condition.

Voici un exemple clair, en partant de zéro :

const regexPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;

function verifierMotDePasse(password) {
    if (regexPassword.test(password)) {
        console.log("Mot de passe valide");
        return true;
    } else {
        console.log("Mot de passe invalide");
        return false;
    }
}

// Exemple
verifierMotDePasse("Bonjour2025!");

Le principe est simple. Nous créons une regex js en utilisant les slashs.

const regexPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;

Ensuite, nous utilisons la méthode test() pour vérifier si le mot de passe correspond à la règle. Si c’est bon, nous affichons un message et retournons true. Sinon, nous indiquons que le mot de passe est incorrect.

C’est la base de validation côté front-end. Cela permet d’informer immédiatement l’utilisateur, sans même recharger la page. C’est agréable, rapide et plus confortable.

Pourquoi ce n’est pas suffisant uniquement en JavaScript

Cependant, il est très important de comprendre que la validation JavaScript ne suffit pas. La raison est simple : JavaScript peut être désactivé, modifié, contourné. Un utilisateur malveillant peut envoyer une requête directement au serveur, sans passer par votre formulaire.

C’est pour cela que la validation doit être doublée avec une regex php côté serveur. La validation en JavaScript n’est pas inutile, bien au contraire, c’est un premier filtre et cela favorise surtout l’UX (expérience utilisateur).

Utiliser une regex mot de passe en PHP

En PHP, une regex fonctionne presque comme en JavaScript, mais la syntaxe d’appel change légèrement. Nous allons utiliser la fonction preg_match().

Voici un exemple simple et propre :

<?php
$password = "Bonjour2025!";

$regexPassword = '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/';

if (preg_match($regexPassword, $password)) {
    echo "Mot de passe valide";
} else {
    echo "Mot de passe invalide";
}

Ici, nous définissons notre regex php dans une variable. Ensuite, nous passons cette regex et le mot de passe à la fonction preg_match. Si le mot de passe respecte votre règle, PHP retourne vrai, sinon faux.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

C’est cette validation côté serveur qui sécurise réellement votre application. Même si quelqu’un tente de contourner JavaScript, il se heurtera à cette vérification.

Adapter la regex mot de passe selon vos besoins

Toutes les applications n’ont pas les mêmes exigences. Un site bancaire ne demandera pas la même sécurité qu’un simple forum entre amis. C’est pour cela qu’il est important de comprendre que votre regex js ou regex php n’est pas figée. Vous pouvez la modifier selon le niveau de sécurité souhaité.

Si vous voulez une regex mot de passe plus simple, par exemple uniquement une longueur minimale de 8 caractères sans règle complexe sur les majuscules, chiffres ou caractères spéciaux, vous pouvez utiliser quelque chose de bien plus léger comme :

^.{8,}$

Cela signifie simplement : n’importe quel caractère, mais au moins huit fois. C’est minimaliste, mais parfois suffisant pour des projets personnels.

Si vous souhaitez un niveau intermédiaire, vous pouvez exiger uniquement majuscules, minuscules et chiffres, sans obliger les caractères spéciaux. Cela donne par exemple :

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$

Ce qui est agréable avec les regex, c’est que vous pouvez ajuster vos règles, les renforcer, les alléger, ou même en ajouter d’autres. L’important est de savoir ce que vous imposez réellement à vos utilisateurs.

Comprendre les parties essentielles d’une regex mot de passe

Pour vraiment dompter une regex password, il faut avoir en tête quelques principes simples. Quand vous voyez ?=.*, cela indique une vérification anticipée. On appelle cela une lookahead. Elle vérifie une condition sans “consommer” le texte. Cela permet par exemple de dire : “je veux au moins une majuscule quelque part dans le mot de passe”, même si je ne sais pas où exactement.

  • Les crochets comme [A-Z] signifient “une lettre comprise entre A et Z”. [a-z] signifie une lettre minuscule. 
  • \d veut dire un chiffre.
  • [\W_] permet de détecter les caractères spéciaux, car ils ne sont ni lettre ni chiffre.
  • Le point . représente n’importe quel caractère,
  • et {8,} indique une répétition d’au moins huit fois.

Une fois que vous avez compris ces briques de base, la regex ne paraît plus magique ni terrifiante. Elle devient juste un langage logique pour décrire une règle.

Afficher des messages clairs à l’utilisateur en JavaScript

Valider un mot de passe avec une regex js, c’est bien. Mais accompagner l’utilisateur, c’est encore mieux. Un des défauts fréquents des validations de mot de passe, c’est qu’elles se contentent d’afficher “Mot de passe invalide”. Pour un débutant ou un simple utilisateur, ce message ne sert à rien. Il veut savoir pourquoi son mot de passe n’est pas accepté.

Voici un exemple en JavaScript qui affiche des messages plus compréhensibles :

const regexPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;

function verifierMotDePasse(password) {
    if (!password) {
        return "Le mot de passe ne peut pas être vide.";
    }

    if (!regexPassword.test(password)) {
        return "Votre mot de passe doit contenir au moins 8 caractères, une majuscule, une minuscule, un chiffre et un caractère spécial.";
    }

    return "Mot de passe valide.";
}

console.log(verifierMotDePasse("Test"));
console.log(verifierMotDePasse("Bonjour2025!"));

Avec ce genre d’approche, vous ne validez pas seulement avec une regex js. Vous accompagnez aussi l’utilisateur, vous l’aidez à comprendre, vous améliorez son expérience, et accessoirement vous évitez qu’il abandonne votre formulaire parce qu’il ne comprend pas ce qu’on lui demande.

Renforcer la validation côté PHP

De la même manière, côté PHP, vous pouvez associer preg_match avec des contrôles supplémentaires. Par exemple, vous pouvez combiner la validation avec une vérification sur la longueur, ou sécuriser davantage vos traitements.

Voici une approche propre et lisible :

<?php

function verifierMotDePasse($password)
{
    if (empty($password)) {
        return "Le mot de passe ne peut pas être vide.";
    }

    $regexPassword = '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/';

    if (!preg_match($regexPassword, $password)) {
        return "Votre mot de passe doit contenir au moins 8 caractères, une majuscule, une minuscule, un chiffre et un caractère spécial.";
    }

    return "Mot de passe valide.";
}

echo verifierMotDePasse("Test");
echo "<br>";
echo verifierMotDePasse("Bonjour2025!");

Ce type de validation regex php est clairement lisible. Même une personne découvrant PHP peut comprendre la logique. Le plus important est que la règle soit bien appliquée, et qu’elle ne repose pas uniquement sur la validation JavaScript.

Les erreurs fréquentes avec les regex mot de passe

Quand on débute avec les regex js et regex php, certaines erreurs sont très courantes. L’une des plus classiques est de copier-coller une regex trouvée sur un forum sans la comprendre. Parfois, elle fonctionne, parfois non, parfois elle bloque des mots de passe parfaitement valides, ou pire, elle accepte des mots de passe trop faibles. Il est donc essentiel de comprendre au minimum la logique, comme vous êtes en train de le faire ici.

Une autre erreur courante consiste à ne valider que côté JavaScript. C’est rapide, cela marche en apparence, mais côté sécurité, c’est une porte grande ouverte. Il faut absolument que votre regex php fasse la validation finale, car c’est elle qui protège réellement l’application.

Il arrive aussi qu’on impose des règles beaucoup trop strictes. Par exemple, des mots de passe si complexes que même l’utilisateur ne les retient pas. Il finit alors par les noter sur un post-it collé à l’écran. Et là, peu importe la force du mot de passe, la sécurité tombe à zéro. Comme toujours, il faut trouver un juste équilibre.

Bonnes pratiques autour des mots de passe

Même si ce tutoriel est centré sur les regex mot de passe en js et php, il est impossible de ne pas élargir un peu la vision. La regex, ce n’est qu’une partie de la sécurité. Vous devez aussi toujours penser à hasher vos mots de passe côté serveur. En PHP, par exemple, il ne faut jamais stocker un mot de passe en clair. On utilise password_hash() pour le sécuriser, puis password_verify() pour vérifier lors de la connexion.

Autre bonne pratique : expliquez les règles clairement à l’utilisateur avant qu’il saisisse son mot de passe. Dites-lui ce que vous attendez. Cela réduit la frustration et améliore la qualité des mots de passe choisis.

Enfin, n’oubliez pas que la sécurité n’est jamais parfaite. Une regex mot de passe solide réduit les risques, mais ne protège pas de tout. C’est une brique importante, mais ce n’est qu’une brique parmi d’autres.

Tester cela avec patience

Quand on découvre les regex pour la première fois, surtout en contexte de mot de passe, on a souvent l’impression que c’est trop compliqué, trop abstrait, presque déconnecté du réel. Pourtant, plus vous les pratiquez, plus elles deviennent naturelles. Et surtout, elles sont utiles. Elles rendent vos formulaires plus fiables, plus sécurisés, plus professionnels.

Ce qui est fascinant avec une regex mot de passe, c’est qu’en quelques caractères, vous encodez une règle complexe. C’est un peu comme si vous écriviez une phrase compacte que seul le langage informatique comprend. Et vous, petit à petit, vous apprenez à la parler.


Arrivé ici, vous avez maintenant une vision claire et complète de ce qu’est une regex mot de passe, comment l’utiliser en js pour valider côté client, et comment l’appliquer proprement en php pour sécuriser réellement votre application côté serveur. Vous avez découvert la logique interne des expressions régulières, compris leurs symboles clés, et surtout vous avez vu comment les utiliser de manière concrète, grâce à des exemples détaillés.

Vous savez maintenant adapter votre règle selon vos besoins, éviter les erreurs typiques, afficher des messages clairs et respecter de bonnes pratiques essentielles en matière de sécurité. Vous avez franchi une étape importante : passer de “je copie une regex sans comprendre” à “je maîtrise la logique et je choisis mes règles”. C’est exactement ce qui fait la différence entre une simple bidouille et un vrai développement propre.

Si vous continuez à pratiquer, à expérimenter, à tester différents cas et à affiner vos regex js et regex php, vous allez rapidement vous sentir à l’aise avec ces outils. Et, surtout, vous proposerez aux utilisateurs de vos sites des formulaires plus sûrs, plus professionnels et plus rassurants. Et entre nous, il n’y a rien de plus satisfaisant que ce sentiment de construire quelque chose de solide, utile et fiable.