Swift Regex со специальными персонажами - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь использовать эту строку:

var passwordRegex = "^[A-Za-z0-9 !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~].{8,}$"

Как мой шаблон регулярного выражения, но он продолжает отказывать, говоря, что шаблон недействителен. Я использовал символ \ для экранирования символов: " и \, но он выдает ошибку: invalid escape sequence in literal для таких ключевых символов регулярного выражения, как ^ & [ ] | . и т. Д.

Чего мне не хватает, чтобы разрешить символы:

 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~   

(включая пробел) в моем регулярном выражении? Я предполагаю, что это как-то связано с тем, как я убегаю, но я ничего не могу найти нигде для этих символов в отношении регулярного выражения SWIFT.

1 Ответ

0 голосов
/ 04 мая 2018

Проблема в том, что символы [, \ и ] необходимо экранировать, поскольку они имеют особое значение в регулярном выражении.

Итак, вам нужно \[, \\ и \] в регулярном выражении. Но поскольку это внутри строки Swift, каждый \ должен быть экранирован с помощью \.

Итак, [\] становится \[\\\] в регулярном выражении, которое становится \\[\\\\\\] в строке Swift.

Последняя действительная строка:

var passwordRegex = "^[A-Za-z0-9 !\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~].{8,}$"
...