This question already has an answer here:
Ignore escaped double quote characters swift

(1个答案)


4年前关闭。




我定义一个字符串:
static let Regex_studio_tel = "^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$"

但是有一个问题:



我标记的图片:

ios - 使用正则表达式的文字中无效的转义序列-LMLPHP

编辑-1

我的要求是使用Regex匹配特殊的飞机号,例如:

我公司有专机号码:
028-65636688 or 85317778-8007

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

例如我公司的座机电话是028-65636688,也许我们公司有10个分机号码:028-65636688-8007 ,028-65636688-8006,028-65636688-8005等。
当然,它可能在末尾有一个分机号。
028-65636688-2559

最佳答案

两个字符序列\ -在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})?$"

添加

正如Rob所评论的那样,减号不是出现在[ ]之外的正则表达式中的特殊字符,因此您可以将其编写为:
static let Regex_studio_tel = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$"

08-06 05:28