Designed by Derf !
53 en ligne
  Forum | Actu | Glossaire | Codes | Tips | Liens | Livres | Annuaire
 

 Recherche





   

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 (214 031 hits)
Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
  • Visual Studio 2010
  • Office 2010
  • Expression Studio 3
  • SQL Server 2008
  • et d'autres...
Au fil des news  
PHP - Drupagora : 1ère edition
Utiliser Reporting Services pour des NewsLetter - SQL Server Reporting Services et les NewsLetters
Le moteur de rapport inclus dans Microsoft SQL Server permet de créer de nombreux rapports ...
Changer la page d'erreur 401 SharePoint - La page d'erreur d'authentification SharePoint
Avec l'authentification classique des sites SharePoint, l'erreur d'authentification est gérée par ...
PHP - Graphique de l'angle du soleil en fonction du lieu
PHP5 - Graphique de l'angle du soleil en fonction du lieu
Adobe - Disponibilité d'Adobe Creative Suite 5.5
Les Thèmes dans SharePoint 2010 - Gérer les thèmes dans SharePoint 2010
SharePoint 2010 apporte de nombreuses modifications dont certaines dans le principe des thèmes.
JavaScript - fonction qui affiche l'heure à travers javascript
Installer SharePoint Foundation 2010 sur Windows 7 - Installer SP Foundation 2010 sur Windows Seven
Lorsque l'on souhaite développer dans le monde SharePoint, il existe plusieurs solutions. La ...
SharePoint et SQL Server 2008 R2 Report Server - Comment accéder à SharePoint depuis SSRS 2008 R2
Depuis la première version, la solution de rapport proposée par Microsoft "SQL Server Reporting ...
JS - Envoi d'un formulaire après chargement d'une image
Divers - Bannir une ip dans le global asax
Dreamweaver CS5 - Nouvelle version Dreamweaver CS5
Déjà plus de 6 mois que le produit est sorti, il fallait bien que je vous en parle un peu. Je vous ...
SharePoint Output Caching dans un site Intranet - Comment utiliser le cache dans un site Publishing
Afin de permettre l'amélioration des performances de sa ferme MOSS utilisée pour le site portail ...
Adobe - Adobe lance le Musée Adobe des Médias Numériques
Adobe - Adobe lance HTML5 Pack pour Illustrator CS5
PHP - Forum PHP 2010 : Le programme
Magazines - Le numéro 133 de programmez est disponible
Adobe - Adobe lance des applications Photoshop Express....
PHP - Détermination de l'intersection entre 2 segments
Magazines - Le N°132 de Programmez est disponible
Les alertes dans SharePoint 2007 - Comment SharePoint 2007 gère les User Alerts
Une des fonctionnalités de base de SharePoint, aussi bien dans Windows SharePoint Services (WSS) ...
Adobe - Photoshop.com Mobile pour Android 1.2
Adobe - Adobe dévoile une technologie de lecture.......
PHP - Experts PHP : participez au Forum PHP 2010 !
PHP - Fobec.com - Code source PHP & javascript
Foliotage alphabétique - Lister sur la première lettre d'un champ
Pour faire suite à l'article de JPierre sur la pagination alphabétique, voici, en ASP et en PHP, ...
Dreamweaver CS4 + Php + Mysql - Pagination alphabétique
Je vous propose la création d'une barre de navigation ou pagination alphabétique pour filtrer les ...
Adobe - HTML5 dans Dreamweaver CS5
VBScript - Déterminer si un chemin est absolu ou relatif
VBScript - Lire/écrire un fichier texte
Magazines - Le N°130 de Programmez est disponible
Hebergement - Hébergement à prix libre
Adobe - Adobe Creative Suite 5
PHP - Calcul de la date de Pâques
Magazines - Le N°128 de Programmez est disponible
Magazines - Le N°127 de Programmez est disponible
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
JavaScript - Ajouter une page dans vos favorites
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
 ASP-magazine DotNet Project MVP Groupes Utilisateurs Microsoft TechNet