J'ai une expression régulière qui ressemble à ceci:Regexp écraser sur iPhone
^(\+\d\d)?(?(?<=\+\d\d)((|)\(0\)(|)| |)|(0))(8|\d\d\d?)[-/ ]?\d\d(?\d){1,4} ?\d\d$
Il est utilisé pour valider les numéros de téléphone suédois. Dans d'autres environnements, tels que .NET, cette expression régulière fonctionne correctement, mais dans Objective-c, elle provoque un blocage, indiquant que l'expression régulière n'est pas une expression rationnelle valide. Je suis loin d'être un expert en matière d'expressions régulières, donc je me demande si quelqu'un peut peut-être m'aider à trouver la raison pour laquelle cette expression ne fonctionne pas.
J'utilise Reggy pour valider l'expression rationnelle et le problème semble être ce groupe
(?(?<=\+\d\d)((|)\(0\)(|)| |)|(0))
mais je ne peux pas comprendre pourquoi ... Si je retire (?
et )
dès le début et à la fin de ce groupe, l'accident disparaît. Est-ce que quelqu'un sait ce que fait (?
? Pour autant que je sais ?
est utilisé pour spécifier qu'un groupe est facultatif, mais qu'est-ce que cela signifie quand il est utilisé au tout début d'un groupe?
Merci! Je n'ai pas créé le Regexp moi-même, donc je ne suis pas sûr des règles et des formats de numéros de téléphone autorisés. Il provient d'une autre application (web) que mon client utilise et souhaite maintenant implémenter la même validation dans une application iPhone. – andlin
C'est un peu ce à quoi je m'attendais. Éditera ma réponse. Bien que vous devriez certainement dire à votre client que vous remplacez quelque chose cassé par quelque chose d'aussi cassé :) –