Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带有正则表达式的文本中的转义序列无效_Ios_Swift_String - Fatal编程技术网

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

Ios 带有正则表达式的文本中的转义序列无效,ios,swift,string,Ios,Swift,String,我使用以下命令定义字符串: static let Regex_studio_tel = "^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$" 但有一个问题: 文本中的转义序列无效 图片I标记: 编辑-1 我的要求是使用正则表达式匹配专机号码,例如: 我的公司有一个专机号码: 028-65636688 or 85317778-8007 //aaa-bbbbbbbb-ccc我们知道aaa是前缀,表示城市拨号代码,bbbbbb是主要电话

我使用以下命令定义字符串:

static let Regex_studio_tel = "^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$"
但有一个问题:

文本中的转义序列无效

图片I标记:


编辑-1

我的要求是使用正则表达式匹配专机号码,例如:

我的公司有一个专机号码:

028-65636688 or 85317778-8007  
//
aaa-bbbbbbbb-ccc
我们知道
aaa
是前缀,表示城市拨号代码,
bbbbbb
是主要电话号码,
cccc
是固定电话分机号码

比如我公司的固定电话是
028-65636688
,可能我们公司有10个分机号码:
028-65636688-8007,028-65636688-8006028-65636688-8005
等等。 当然,它的结尾可能有一个分机号码

028-65636688-2559

双字符序列
\
-在Swift字符串中不是有效的转义序列。当您需要将
\
-
作为模式传递给
NSRegularExpression
时,您需要以Swift字符串文字编写
\-

所以,你的台词应该是这样的:

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})?$"

我猜您的意图是转义
-
字符。但这是没有必要的(而且是不正确的)。如果您的目的只是匹配破折号,则应完全删除这些反斜杠:

let pattern = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$"


不相关,但我怀疑那个
+
字符。您的意思是要匹配一个或多个出现的
[2-9][0-9]{6,7}
?或者您希望只匹配一个匹配项?

尝试:static let Regex_studio_tel=“^(0[0-9]{2,3}'\'-)?([2-9][0-9]{6,7})+('\'-[0-9]{1,4})”您可能需要更多的示例来阐明您的要求
65636688
无效,028-65636688-85317778-8007也无效,好吗?@Rob,我想知道我是否应该记下它,但似乎我应该记下。谢谢。它节省了我的时间。谢谢兄弟,我想匹配的座机号码,我张贴是不可用的SWIFT,匹配所有的陆线号码也会考虑<代码> +代码>代码。我不知道这些格式的地线号码你想匹配。但我很确定这不是多个
[2-9][0-0]{6,7}
序列。例如,您的正则表达式将匹配重复700次的数字9序列。我不敢相信这是你的本意。也许您可以编辑您的问题,并向我们展示您想要匹配的所有字符串的实际示例。@aircraft-好的,我看到您更新了您的问题。那么,您是在尝试匹配完整的逗号分隔的数字列表,还是希望使用一个正则表达式来迭代更宽字符串中的数字?