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