web-dev-qa-db-fra.com

Séquence d'échappement invalide en littéral avec regex

Je définis une chaîne avec:

static let Regex_studio_tel = "^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$"

Mais il y a un problème:

Séquence d'échappement invalide en littéral

L'image que j'ai jetée:

 enter image description here


Éditer -1

Mon exigence est de faire correspondre des numéros spéciaux avec Regex, tels que:

Ma compagnie a un numéro d'avion spécial:

028-65636688 or 85317778-8007  

// aaa-bbbbbbbb-ccc nous savons que aaa est le préfixe. Cela signifie que le code de composition de la ville et bbbbbbbb est le numéro de téléphone principal, cccc est le numéro de poste du téléphone fixe,

tel que le numéro de téléphone fixe de ma compagnie est 028-65636688, peut-être que notre compagnie a 10 numéro de poste: 028-65636688-8007 ,028-65636688-8006,028-65636688-8005 et ainsi de suite. Bien sûr, il peut avoir un numéro de poste à la fin.

028-65636688-2559
5
aircraft

La séquence de deux caractères \- n'est pas une séquence d'échappement valide dans Swift String. Lorsque vous devez passer \- à NSRegularExpression en tant que modèle, vous devez écrire \\- dans le littéral Swift String.

Donc, votre ligne devrait ressembler à ceci:

static let Regex_studio_tel = "^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$"

UNE ADDITION

Comme l'a commenté Rob, le signe moins n'est pas un caractère spécial dans regex lorsqu'il apparaît en dehors de [], vous pouvez donc l'écrire comme suit:

static let Regex_studio_tel = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$"
17
OOPer

Je devine que votre intention était d'échapper aux caractères -. Mais ce n'est pas nécessaire (et c'est incorrect). Si votre intention était de faire correspondre uniquement des tirets, vous devez supprimer ces barres obliques inverses:

let pattern = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$"

Sans lien, mais je me méfie de ce caractère +. Voulez-vous vraiment dire que vous vouliez faire correspondre une ou plusieurs occurrences de [2-9][0-9]{6,7}? Ou avez-vous voulu faire correspondre exactement un événement?

1
Rob