[PHP] Aide sur expression reguliere (preg match)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [PHP] Aide sur expression reguliere (preg match)

Re: [PHP] Aide sur expression reguliere (preg match)

par perlimpinpim » 06 déc. 2010, 12:13

un petit up, on y est presque ! ;)

Re: [PHP] Aide sur expression reguliere (preg match)

par perlimpimpim » 02 déc. 2010, 11:05

Merci c'est du bon boulot, moi je ne capte rien. J'avais oublié un cas, désolé.

Il s'agit bien de contenir une lettre et un chiffre ou au moins 2 chiffres.

J'ai changé les règles car je pensais te faciliter la tache ;)

Autrement, peut-être est-ce plus simple en matchant les données à exclure puis à inverser le preg match ? Les conditions semblent plus simples :

- la chaîne ne contient pas de chiffre
- la chaîne peut contenir au moins une fois le caractère + ou _ ou ? . ou ,

Re: [PHP] Aide sur expression reguliere (preg match)

par devlop78 » 01 déc. 2010, 20:14

Bah c'est toi qui n'est pas logique, tu définis des règles et tu les changes :
contiennent au minimum une lettre et un chiffre (mais pas l'un sans l'autre)
Evidemment "1319469" ne répond pas à ce critère ...

Par contre pour "1220400112/AC", c'est moi j'ai autorisé les \ au lieu des / ... lol


/^[a-z0-9\-]*(([0-9][\-\/]*[a-z])|([a-z][\-\/]*[0-9]))[a-z0-9\-]*$/i

Mais ça se trouve on peut le réduire deux fois ... je ne suis pas expert en expression régulière ... je réfléchis c'est tout ...

Re: [PHP] Aide sur expression reguliere (preg match)

par perlimpimpin » 01 déc. 2010, 15:30

Franchement bravo, je n'y pige rien mais bravo, tu y es presque !

Reste ces chaines qui sont exclues par la regexp et que je souhaite garder :

1319469
109625772
1021011724
1220400112/AC
1370401226/AD
50077601147
50077601147

Re: [PHP] Aide sur expression reguliere (preg match)

par devlop78 » 01 déc. 2010, 15:00

Oui là c'est moins évident

/^[a-z0-9]*(([0-9][a-z])|([a-z][0-9]))[a-z0-9]*$/i

Peut etre alors

/^[a-z0-9\-]*(([0-9][\-\\]*[a-z])|([a-z][\-\\]*[0-9]))[a-z0-9\-]*$/i

???

Re: [PHP] Aide sur expression reguliere (preg match)

par stealth35 » 01 déc. 2010, 11:48

le g c'est une option flash :wink:

Re: [PHP] Aide sur expression reguliere (preg match)

par perlimpimpim » 01 déc. 2010, 11:30

Le /g fait gueuler mon php

preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier 'g'

Pour simplifier :

- la chaîne doit contenir une lettre et un chiffre ou que des chiffres (mais pas que des lettres)
- la chaîne doit contenir plus de 1 caractère
- la chaîne peut contenir un ou plusieurs espaces, un tiret (-) ou un slash (/) n'importe où

J'ai déjà essayé avec l'url donnée mais ça ne fonctionne pas, la regexp doit être trop compliquée.

Re: [PHP] Aide sur expression reguliere (preg match)

par moogli » 01 déc. 2010, 10:50

essai avec /[a-z0-9]*(([0-9][a-z])|([a-z][0-9]))[a-z0-9]/gi ?

tu peut tester avec http://gskinner.com/RegExr/ (indiqué par devlop78)

@+

Re: [PHP] Aide sur expression reguliere (preg match)

par perlimpimpim » 01 déc. 2010, 10:26

Merci !

Mais les deux derniers ne matchent pas :(

545AAA-5454
10-A4111

La chaîne doit contenir au moins une lettre ET un chiffre et peut contenir un / ou un -

Re: [PHP] Aide sur expression reguliere (preg match)

par devlop78 » 30 nov. 2010, 20:04

/^[a-z0-9]*(([0-9][a-z])|([a-z][0-9]))[a-z0-9]*$/i

je dirais ... mais c'est cra cra quand meme

[PHP] Aide sur expression reguliere (preg match)

par perlimpinpin » 30 nov. 2010, 19:33

Bonjour,

J'ai les valeurs suivantes dans un tableau que je souhaite nettoyer :

.
,
?
???
???????????
87+sss
X
AAAAAAAA
BBBBB
AAA BBBBB
AAA555AAA21
545AAA-5454
10-A4111


En gros je ne veux garder que les chaines qui :
- contiennent au minimum une lettre et un chiffre (mais pas l'un sans l'autre)
- dont la longueur est strictement supérieure à 1 caractère
- qui ne contiennent pas d'espace, ni de caractères spéciaux (type tabulation, retour chariot, etc.)

Les trois derniers de la liste doivent matcher.

Merci de votre aide.