我用:
定义一个字符串static let Regex_studio_tel = "^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$"
但是有一个问题:
文字
中的转义序列无效
图片我的标记:
修改-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
答案 0 :(得分: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})?$"
<强> ADDITION 强>
正如Rob评论的那样,当出现在[
]
之外时,减号不是正则表达式中的特殊字符,因此您可以将其写为:
static let Regex_studio_tel = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$"
答案 1 :(得分:1)
我猜你的意图是逃避-
个字符。但这不是必要的(而且是不正确的)。如果你的意图只是匹配破折号,你应该完全删除那些反斜杠:
let pattern = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$"
无关,但我对+
字符持怀疑态度。您是否真的想要匹配一次或多次[2-9][0-9]{6,7}
次?或者你想要恰好匹配一次?