Page 1 sur 1
[PHP] Aide sur expression reguliere (preg match)
Posté : 30 nov. 2010, 19:33
par perlimpinpin
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.
Re: [PHP] Aide sur expression reguliere (preg match)
Posté : 30 nov. 2010, 20:04
par devlop78
/^[a-z0-9]*(([0-9][a-z])|([a-z][0-9]))[a-z0-9]*$/i
je dirais ... mais c'est cra cra quand meme
Re: [PHP] Aide sur expression reguliere (preg match)
Posté : 01 déc. 2010, 10:26
par perlimpimpim
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)
Posté : 01 déc. 2010, 10:50
par moogli
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)
Posté : 01 déc. 2010, 11:30
par perlimpimpim
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)
Posté : 01 déc. 2010, 11:48
par stealth35
le
g c'est une option flash

Re: [PHP] Aide sur expression reguliere (preg match)
Posté : 01 déc. 2010, 15:00
par devlop78
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)
Posté : 01 déc. 2010, 15:30
par perlimpimpin
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)
Posté : 01 déc. 2010, 20:14
par devlop78
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)
Posté : 02 déc. 2010, 11:05
par perlimpimpim
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)
Posté : 06 déc. 2010, 12:13
par perlimpinpim
un petit up, on y est presque !
