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

Swift Regex with special Characters

我正在尝试使用这个字符串:

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

作为我的正则表达式模式,但它一直失败说模式无效。我使用 \ 字符对字符进行转义:"\,但它会抛出错误:invalid escape sequence in literal 对于 ^ & [ ] | . 等正则表达式键字符。

为了允许字符,我缺少什么:

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

(包括 space)在我的正则表达式中?我认为这与我的转义方式有关,但关于 SWIFT 的正则表达式,我无法在任何地方找到这些字符的任何内容。

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

所以正则表达式中需要\[\\]。但是由于这是在 Swift 字符串中,因此每个 \ 都需要使用 \.

进行转义

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

最终的有效字符串是:

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