我正在尝试使用此字符串:
var passwordRegex = "^[A-Za-z0-9 !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~].{8,}$"
作为我的正则表达式模式,但它仍然无法说模式无效。我使用\
字符来转义字符:"
和\
,但它会为invalid escape sequence in literal
等正则表达式关键字符引发错误:^ & [ ] | .
。
为了允许角色我缺少什么:
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
我的正则表达式中的(包括空格)?我认为这与我如何逃避有关,但在SWIFT的正则表达方面我无法找到这些角色的任何地方。
答案 0 :(得分:9)
问题是字符[
,\
和]
需要转义,因为它们在正则表达式中具有特殊含义。
因此,您需要在正则表达式中使用\[
,\\
和\]
。但由于这是在Swift字符串中,因此每个\
都需要使用\
进行转义。
因此[\]
在正则表达式中变为\[\\\]
,在Swift字符串中变为\\[\\\\\\]
。
最终有效字符串是:
var passwordRegex = "^[A-Za-z0-9 !\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~].{8,}$"