我正在创建一个与 Textile 非常相似的文本到标记过程的最小版本。我成功地转换了粗体、斜体、删除线(分别带有 *、_ 和 -),但我还使用以下表达式自动将 HTTP 字符串转换为链接:
/([^\(])(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.\-]*(\?\S+)?)?)?)/
问题是,如果 HTTP 字符串包括,例如,破折号,删除线 ( /\-([^\*]+?)\-/
) 的表达式也会被处理,导致 URL 链接会改变:
site.com/path-with-dashes
至site.com/path<del>with</del>dashes
同时实现这两个过程的最佳解决方案是什么?我假设将删除线表达式更改为要求破折号之前的字符是空格字符或行首会起作用,但我无法在一个表达式中实现这一点。