具有特殊字符的Swift正则表达式

时间:2018-05-04 16:52:44

标签: ios swift regex special-characters

我正在尝试使用此字符串:

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

作为我的正则表达式模式,但它仍然无法说模式无效。我使用\字符来转义字符:"\,但它会为invalid escape sequence in literal等正则表达式关键字符引发错误:^ & [ ] | .

为了允许角色我缺少什么:

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

(包括空格)?我认为这与我如何逃避有关,但在SWIFT的正则表达方面我无法找到这些角色的任何地方。

1 个答案:

答案 0 :(得分:9)

问题是字符[\]需要转义,因为它们在正则表达式中具有特殊含义。

因此,您需要在正则表达式中使用\[\\\]。但由于这是在Swift字符串中,因此每个\都需要使用\进行转义。

因此[\]在正则表达式中变为\[\\\],在Swift字符串中变为\\[\\\\\\]

最终有效字符串是:

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