2012-06-19 3 views
0

Donc j'essaye de preg_match une adresse en PHP.Adresse Preg_match

Il doit s'agir de lettres et de chiffres ESPACE et non de lettres ESPACE. Donc, comme ceci: Myplace 16. La longueur des chiffres et des lettres n'a pas d'importance, mais ils ne peuvent pas être mélangés ensemble.

je l'ai déjà essayé celui, mais celui-ci des espaces de contrôle doens't:

if(preg_match("/^[0-9a-zA-Z_]{5,}$/", $adres) === 0) 
{ 
echo 'Address is wrong'; 
} 

Merci à l'avance!

+0

Donc par exemple "abc 1/2/D efg"? – deceze

+0

pas plus comme abc 09, pas de chiffres avant les lettres. Il doit toujours se terminer par des chiffres comme une véritable adresse –

+0

Je vois, je lisais "des lettres et des chiffres ESPACE et non des lettres ESPACE" * faux alors. Je serais utile si vous fournissiez quelques exemples pour rendre ce que vous voulez sans ambiguïté. – deceze

Répondre

1

Le motif que vous avez montré ne correspond pas du tout à ce que vous essayez de faire. Pour votre but, vous feriez quelque chose comme

/^[a-zA-Z]+\ +[0-9]+$/ 

Ce contrôle pendant au moins une lettre, au début de la chaîne suivies par 1 ou plusieurs espaces suivis par 1 ou plusieurs chiffres, à quel point la chaîne doit se terminer.

À moins, bien sûr, je comprends mal ce que vous essayez d'atteindre ...

+0

Cela a fait l'affaire! Merci beaucoup. –

0

J'utilise 1 pour capturer une erreur (preg_match retourne false, et 0, pas de match)

if(1 !== preg_match('/^[a-z]*\ +\d*$/i', $address)) 
{ 
    echo 'Address is wrong'; 
} 

Cela correspondra à n'importe quel caractère entre az (insensible à la casse) entre 0 et des heures illimitées, puis correspondra au moins à un caractère espace, puis tous les nombres entre 0 et des temps illimités. Si vous avez besoin d'au moins 1 lettre et 1 chiffre s'il vous plaît changer le * en +