Warning: preg_match() [function.preg-match]: Compilation failed: rien à redire à l'offset
je suis en train de changer le preg_match vérifier à partir de l'url de la vérification du nom d'utilisateur de vérifier ce qui est de min/max 2-16chrs, tiret, espace & tiret acceptable. j'obtiens cette erreur
Avertissement: preg_match() [function.preg-match]: Compilation failed: rien à redire au décalage de 14
if(empty($string) || preg_match("#^([\w- ]{2,16}*(?:.[\w- ]{2,16}*)+):?(d+)?/?#i", $string))
ancien code qui a cherché URL
if(empty($string) || preg_match("#^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?#i", $string))
OriginalL'auteur acctman | 2011-04-16
Vous devez vous connecter pour publier un commentaire.
Le problème est ici:
Vous ne pouvez pas utiliser
{2,16}
et*
ensemble, vous ne pouvez utiliser que l'un ou l'autre.Si vous étiez à la recherche de match, des groupes de 2 à 16
[\w- ]
s, au moins 0 fois, de l'envelopper dans un sous-masque et d'attacher le*
à l'extérieur:OriginalL'auteur BoltClock
Ce BoltClock dit est correct. Mais il y a d'autres problèmes avec votre regex. Tout d'abord, pour résoudre votre problème immédiat, voici une regex, qui valide, un nom d'utilisateur à partir de 2 à 16 caractères de long, composé uniquement de lettres, de chiffres, des traits de soulignement, des tirets/des tirets et des espaces:
Noter qu'il n'est pas nécessaire pour le
'empty() ||'
clause parce que l'expression régulière correspond seulement si il existe au moins 2 caractères.Deuxième, regexes sont très utiles (et peut-être même plaisir!), mais si vous allez les utiliser, vous avez besoin de s'asseoir et apprendre la syntaxe, de la plaine et simple (il n'est pas bien dur). Je vous recommande fortement de passer une heure ou deux d'étudier les notions de base. Il y a un excellent tutoriel en ligne à: http://www.regular-expressions.info. Le temps que vous passez, il va payer pour lui-même à plusieurs reprises. Heureux regexing!
OriginalL'auteur ridgerunner