带有正则表达式的文字中的转义序列无效

air*_*aft 7 string ios swift

我定义了一个字符串:

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

但是出现了一个问题:

文字中的转义序列无效

图片我的标记:

在此输入图像描述


编辑-1

我的要求是匹配特殊的平面号使用正则表达式,例如:

我公司有一个特殊的飞机号码:

028-65636688 or 85317778-8007  
Run Code Online (Sandbox Code Playgroud)

// aaa-bbbbbbbb-ccc我们知道这aaa是前缀,它表示城市拨号代码,bbbbbbbb是主要的电话号码,cccc是固定电话的分机号码,

比如我公司的座机电话028-65636688,也许我们公司有10个分机号码:028-65636688-8007 ,028-65636688-8006,028-65636688-8005等等.当然,它最后可能有一个分号.

028-65636688-2559
Run Code Online (Sandbox Code Playgroud)

OOP*_*Per 20

两个字符序列\ -不是Swift String中的有效转义序列.当你需要传递\ -NSRegularExpression模式时,你需要\\-用Swift String文字书写.

所以,你的行应该是这样的:

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

加成

正如Rob评论的那样,减号在出现在外面时不是正则表达式中的特殊字符[ ],所以你可以把它写成:

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