替换出现快速的正则表达式

时间:2017-03-10 21:38:43

标签: regex swift swift3

我尝试使用String.replacingOccurrences将所有出现的以下字符更改为逗号:

#.$[]

然而,我似乎无法用我所拥有的东西来实现这一目标:

func cleanStr(str: String) -> String {
    return str.replacingOccurrences(of: "[.#$[/]]", with: ",", options: [.regularExpression])
}

print(cleanStr(str: "me[ow@gmai#l.co$m"))   // prints "me[ow@gmai,l,co,m\n"

有人能帮我看看我做错了吗?

1 个答案:

答案 0 :(得分:4)

在您的模式[.#$[/]]中,有一个字符类联合,也就是说,它只匹配.#$/个字符(两个字符类[.#$][/]的组合)。

在ICU正则表达式中,您需要在字符类中转义文字方括号[]

"[.#$\\[/\\]]"

此代码输出me,ow@gmai,l,co,m

func cleanStr(str: String) -> String {
    return str.replacingOccurrences(of: "[.#$\\[/\\]]", with: ",", options: [.regularExpression])
}
print(cleanStr(str: "me[ow@gmai#l.co$m"))