Rechercher : dans
Par :

[PHP] Syntaxe d'expressions régulières

Dernière réponse le 21 mai 2008 à 14:40:23 TDW, le 20 mai 2008 à 22:14:33 
 Signaler ce message aux modérateurs

Bonjour,
je cherche à déceler si une chaine de caractère respecte le format suivant en respectant les crochets et les espaces :
lettres chiffres [lettres chiffres]

En consultant wikipedia, j'ai mis au point l'expression régulière suivante :
'[:alnum:]+ [:digit:]+ \[[:alnum:]+ [:digit:]+\]'

Mais j'obtient l'erreur suivante :
Warning: preg_match() [function.preg-match]: Unknown modifier '+' in ... on line 75
75 étant la ligne où j'ai placé mon expression.

Configuration du serveur web :
Apache : 2.2.8
PHP : 5.2.4

Si quelqu'un pouvait me dire d'où viens l'erreur (de syntaxe apparemment) ou me corriger mon expression.
Merci d'avance.

Meilleures réponses pour « [PHP] Syntaxe d'expressions régulières » dans :
PHP - Expressions régulières Voir Qu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
PHP - Les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

1

lewis34, le 20 mai 2008 à 22:20:19

Bonsoir si tu veut j'ai un petit dossier concernant les chaines je te le met à dispostion
http://milsodor.no-ip.org/ccm/regex/
j'espere que cela va t'aider
@+

Répondre à lewis34

5

TDW, le 21 mai 2008 à 14:33:24

Je n'ai rien trouvé dans ton dossier d'autre que ce que je savais déjà.
Cependant, il est bien présenté et clair, je m'en resservirai.

J'ai quand même essayer une chose que j'ai vu dans des exemples :
J'ai tenté de remplacer le '+' par '{1,30}' (le 30 étant plus que suffisant comme maximum dans mon cas)
Mais la l'erreur devient : Warning: preg_match() [function.preg-match]: Unknown modifier '{' in ...


PS : en page 15 tu as inversé minuscule et majuscule dans l'exemple.

Répondre à TDW

2

B2n, le 20 mai 2008 à 22:21:02

Essaye ca :
[a-zA-Z0-9]\[[a-zA-Z0-9]\]

Répondre à B2n

6

 TDW, le 21 mai 2008 à 14:40:23

Par d'erreur à l'execution mais ne correspond pas du tout aux critères de départ.
les groupes de chiffres et de lettres contiennent un nombre variable de caractères et sont séparé par des espace.
Le problème c'est le nombre variable de caractère. D'où le '+' qui pose problème.

Répondre à TDW

3

Didoch54000, le 20 mai 2008 à 22:21:52

Bonsoir,

C'est juste une intervention de ce que je me rappel :
J'avais eut le même soucis et j'ai changé :
les digit par des 0-9
les alpha par des A-Z

ce qui donne quelque chose comme ca :
'[:alnum:]+ [:digit:]+ \[[:alnum:]+ [:digit:]+\]'
en:
'[A-Za-z0-9]+ [0-9]+ \[[A-Za-z0-9]+ [0-9]+\]'

Car :alnum: ... et compris par unix uniquement.

Bon code

Répondre à Didoch54000

4

TDW, le 21 mai 2008 à 14:24:52

Même problème, c'est le '+' qui pose problème.
Les classes de caractères sont bien comprises, ma compilation de PHP inclut les normes POSIX
(je les ai testé dans une expression toute simple elles passent)

Répondre à TDW