【问题标题】:Angular Filter string replace角度过滤器字符串替换
【发布时间】:2017-03-10 06:05:45
【问题描述】:

我在 Angular 1 中创建了一个过滤器并且有一些问题:

我有一个这样的字符串:

**StackExchange** is a website...

期望的结果是:

<span class="title">StackExchange</span> is a website...

我的过滤器如下所示:

.filter('makeSpan', function() {
  return function(input, all) {
    return (!!input) ? input.replace(/[*]{2}/, '<span class="title">')  : '';
  }
});

应用此过滤器时,我得到 StackExchange** 是一个网站...我的问题是我该怎么做才能定位其他 2 **。谢谢。

【问题讨论】:

  • 使用html元素看起来更像你需要一个指令给我
  • 如果数据不是来自 API,那就对了。

标签: angularjs regex filter angular-filters


【解决方案1】:

如果您的 HTML 输入是无标签的,您可以“定位”这两个 ** 对:

return (!!input) ? input.replace(/\*{2}([^]*?)\*{2}/g, '<span class="title">$1</span>') : '';

regex demo

  • \*{2} - **
  • ([^]*?) - 第 1 组(用 $1 引用)捕获任何 0+ 个字符,尽可能少到第一个...
  • \*{2} - **

【讨论】:

    【解决方案2】:

    这实际上似乎有效。

    return (!!input) ? input.replace(/[*]{2}/, '<span class="title">').replace(/[*]{2}/, '</span>')  : '';
    

    【讨论】:

    • 看来你需要return (!!input) ? input.replace(/\*{2}([^]*?)\*{2}/g, '&lt;span class="title"&gt;$1&lt;/span&gt;') : '';
    猜你喜欢
    • 2016-12-18
    • 2016-01-10
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多