如何使用正则表达式将<i>元素替换为同一元素中的属性值?

时间:2017-02-17 08:30:45

标签: javascript regex ecmascript-6

我尝试使用这样的HTML字符串:

I'm extra <i data-emoji=":)" class="emoji emoji-happy"></i> today!

并仅返回:

我今天额外:)!

我正在使用Javascript。

这就是我到目前为止的做法:

    const emojiRegex = /<i\s.*data-emoji="(.*?)".*\/i>/
    const matches = data.match(emojiRegex)
    const fixed = matches && matches.length > 0
      ? data.replace(matches[0], matches[1])
      : data

    return fixed

它确实有效,但我想知道是否有更好,更安全的方法。我的正则表达式模式的第一个变体包括检查引号内的非字母数字字符,例如data-emoji =&#34;(\ W *?)&#34;,但是我也可以得到字符串:S或者其他东西那样的,所以我把它改成了#34;(。*?)&#34;,但是我担心会出现可能失败的情况。

任何人都知道更好,更安全的方式吗?

1 个答案:

答案 0 :(得分:1)

我只会改变一些小事,但你的js代码看起来太复杂了,不能

&#13;
&#13;
func1
&#13;
&#13;
&#13;