Designed by Maunakea !
62 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter






   

L'objet REGEXP (1/2)

Les Expressions Régulières et JavaScript





Didier
Qu'est-ce que c'est encore que cette bête ?... En fait, un moyen simple, même si parfois obscur au premier abord, pour faire des recherches d'occurences dans une chaîne... Exemple :

Pour vérifier la validité de structure d'une adresse email saisie dans un formulaire :

Page 1  2  SUITE >> 
Télécharger tout le tutorial JavaScript/VBScript

function verif(email) { // vérif validité email par STRING
   var arobase = email.indexOf("@")
   var point = email.lastIndexOf(".")
   if((arobase < 3)||(point + 2 > email.length)
      ||(point < arobase+3)) return false
   return true
}
function verif(email) { // vérif validité email par REGEXP
   var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
   return (reg.exec(email)!=null)
}

Evidemment comme ça, à froid, c'est illisible... alors détails :
  • var reg = /blablabla/ définit un masque de recherche
  • reg.exec(votrechaîne) cherche les occurences du masque dans votre chaîne et retourne ce qui a été trouvé ou null
  • "blablabla" enfin se décompose dans notre exemple de la manière suivante :

    • ^ : depuis le début de la chaîne
    • [a-z0-9.-_]+ : cherche au moins 1 caractère spécifié (de "a" à "z" ou "0" à "9" ou "." ou "-" ou "_")
    • @ : suivis de l'arobase
    • [a-z0-9]{2,} : suivis d'au-moins 2 caractères spécifiés (de "a" à "z" ou "0" à "9")
    • [.] : suivis d'un point (entre crochets car spécial dans regexp)
    • [a-z]{2,3} : suivis de 2 à 3 caractères spécifiés (de "a" à "z")
    • $ : et la chaîne doit être terminée
Note : + signifie "au moins 1 fois le caractère précédent" équivalent à {1,}

Du coup vous voyez qu'il est facile de tester si l'internaute a bien tapé...
  • un nombre entier : var reg = /^\d+$/
    ( \d équivaut à [0-9] )
  • ou un décimal : var reg = /^\d+[.]\d+$/
  • ou un nombre (entier ou décimal) : var reg = /^\d+[.]?\d*$/
    ( * signifie "0 ou plusieurs fois" et ? signifie "0 ou 1 fois" )
  • ou un décimal finissant par ".5" (demandé par un visiteur) var reg = /^\d*[.]5$/
  • ... etc

L'objet RegExp, comme ceux utilisés dans les autres fiches, est décrit dans la doc JVScript ! Suivent quelques-uns des caractères pouvant constituer ce masque...
CaractèreExemplesCommentaire
^  $   Début et fin de la saisie
[ ] [asp]   [0-9]   [a-zA-Z] Liste de caractères
[^ ] [^asp]   [^0-9]   [^a-zA-Z] Liste de caractères exclus
(modele)   Modèle
x|y (f|z)oo : marche pour foot ou zoo x ou y
*   Le caractère précédent apparaît 0 ou plusieurs fois
+   Le caractère précédent apparaît 1 ou plusieurs fois
?   Le caractère précédent apparaît 0 ou 1 fois
{n}   Le caractère précédent apparaît exactement n fois
{n,}   Le caractère précédent apparaît au moins n fois
{n,m}   Le caractère précédent apparaît de n à m fois
\ \\ --> \     \( --> (     \) --> )
\n --> nouvelle ligne
\f --> saut de page
\t --> tabulation
Le caractère suivant est spécial
\b   Fin d'un mot
\B   Pas à la fin d'un mot
\xHH \x41 <--> A Code hexadécimal d'un caractère
\s \s <--> [ \f\n\r\t\v] Tout caractère séparateur
\S \S <--> [^ \f\n\r\t\v] Tout caractère non séparateur
\ autres \d <--> [0-9]
\D <--> [^0-9]
\w <--> [A-Za-z0-9_]
\W <--> [^A-Za-z0-9_]
Raccourcis

REMARQUES
  • On peut déclarer autrement une variable RegExp : var reg = new RegExp("blablabla")

  • Un paramètre supplémentaire (commutateur) peut être ajouté :
    var reg = /blablabla/commut ou var reg = new RegExp("blablabla","commut")
    avec 3 valeurs possibles pour commut :
    • i : ignorer la casse (diff maj/min) ;
    • g : recherche globale (toutes les occurences) ;
    • gi : recherche globale ignorant la casse ;


  • la 1ère occurence trouvée dans la chaîne est à RegExp.index ou -1 si pas trouvé...

  • On peut aussi remplacer les occurences par une autre sous-chaîne : chaine.replace(reg, souschaine)

  • On peut aussi décomposer une chaîne en un tableau : chaine.split(reg)

  • On peut enfin obtenir un tableau des résultats de recherche avec exec ou match... l'élément 0 contient les derniers caractères retenus et les autres éléments (1 à 9) les correspondances des modèles entre parenthèses dans l'expression régulière.
Page 1  2  SUITE >> 

Didier le 30/05/2003 (137 464 hits)
Didier Testez gratuitement la plateforme web de Windows Server 2008 !
Gagnez un voyage aux Etats-Unis pour la MS Project Conference !
Au fil des news  
CSharp - Sérialisation XML de vos objets
Magazines - Le n°121 de Programmez est disponible
Adobe - Adobe annonce MAX 2009 !
Outils - WhoIs
[MAJ] Dreamweaver MX + Php + MySql - Les formulaires - partie 3
Mise à jour du code, par DB 77, affichage du code erreur, dans la page erreur.php, traduction des ...
PHP - News avec photo - Système de gestion - affichage
Gestion - Administration - Affichage d'une "News", "Actualité", "Info", ... avec : - mise en forme ...
Outils - Crypt
Dreamweaver Php Mysql - Région répétée imbriquée
Je rebondis, sur un post du forum, pour vous montrer comment obtenir grâce à l'extension Simulated ...
Magazines - Le n° 120 de Programmez est disponible
Gérer les bases de contenu SharePoint - Gérer la croissance du volume des données
Dans le cadre de la gestion quotidienne de ferme SharePoint, il existe une partie qu'il faut ...
PHP - Le Coach PHP sur Visual Studio
.NET - Ecrire une application .NET utilisant MySQL
PHP - Utilisation de PHP dans le monde Microsoft
Magazines - Le n° 119 de Programmez est disponible
Adobe - Adobe annonce Photoshop Marketplace
[MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
Mis à jour le 20/04/2009
Captcha «maison» sans extension - Et en plus, c'est gratuit ;)
Un ami m'a demandé de l'aide ce matin pour insérer un captcha dans un formulaire pour son site ...
Dreamweaver CS4 - Photoshop CS4 - Alliance parfaite pour la gestion des images
Pour changer un peu des pages de code, je vous propose de voir ensemble, la fonctionnalité très ...
JavaScript - Calcul automatique d'une facture
Amélioration du Search MOSS: Manipulation XSL - Utilisation du XSL dans l'affichage des résultats
Parmi tous les articles sur l'amélioration du moteur de recherche de Microsoft Office SharePoint ...
Outils - Editeur d'icônes IcoFX
Magazines - Le n°118 de Programmez est disponible
JavaScript - Imprimer une autre page que celle en cours
CSS - div pour imiter frame (Bandeau/Menu FIXES)
[MAJ] [PHP] Un calendrier très complet -
ajout des événements au calendrier
PowerShell - Winforms pour l'aide des commandes GET PowerShell
Adobe - Adobe Photoshop Lightroom 2 est offert ....
Amélioration du Search MOSS: synonyme et Best Bet - La gestion des synonymes dans MOSS Search
Le moteur de recherche de MOSS permet la configuration d'une liste de synonymes. Nous verrons donc ...
AJAX - récup champs formulaires pour POST en AJAX
PowerShell - Un windows Forms pour SharePoint en PowerShell
Sondage associatif (compatibilité) - Qui va bien avec qui ?
Cette fois, c'est un petit sondage que je vous propose. Il pourra bien sûr être adaptée à vos ...
ASP - Hashage MD5 (cryptage irréversible)
Adobe - 80% de réduction sur les versions Adobe Creative
CSharp - Interroger un serveur Whois
CSharp - Equivalent de la fonction PHP htmlentities()
CSharp - Somme de contrôle CRC32
Magazines - Le n°117 de Programmez est disponible
Hebergement - Hébergement ASP et ASP.Net
MOSS - Mon Profil - Personnalisation des profils utilisateurs de MOSS
La gestion des profils utilisateurs de SharePoint fait partie des fonctionnalités de base de ...
Dreamweaver CS3 + Php + Mysql - Le Jeu d'Enregistrements - Les fondamentaux Part-3
La 3ème partie des fondamentaux, traitera essentiellement du jeu d'enregistrements ou Recordset. ...
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3b © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 MVP Codes Sources TechNet ASP-magazine Groupes Utilisateurs Microsoft El Roubio Wygwam The Inquirer FR CodePPC DotNet Project