首页 > 解决方案 > 降价和链接的特定正则表达式

问题描述

我在我的 iOS 应用程序中使用 markdownKit,因为它更容易处理带有标题和描述的文本。

我为健身房创建了一个管理面板,这样他们就可以将锻炼分享给他们的成员。有时,他们被添加了这样的锻炼:

而且由于降价,它真的很乱。所以我创建了这个小功能,以删除特殊字符(因为目的不是将其用于降价)。

static func escapeMarkdownCharacters(_ text: String) -> String {
      let modString = text.replacingOccurrences(of: "[#>*\\-+]", with: "\\\\$0", options: [.regularExpression])
      return modString
}

https://youtu.be/Z9GZoDq-8JU我现在的问题是,YouTube 链接不再可点击:https://youtu.be/Z9GZoDq\-8JU因此,链接无法打开。

只有当它不在链接中时,有没有办法替换它?

标签: iosswiftregexswift5

解决方案


您可以利用 ICU 约束宽度后视模式:

of: "(?<!http\\S{0,255})[#>*+-]"

在这里,它将匹配

  • (?<!http\S{0,255})- 一个不紧跟在前面的位置http和 0 到 255 个非空白字符
  • [#>*+-]- #, >,*+char -

推荐阅读