我試圖把HTML字符串是這樣的:如何使用正則表達式替換<i>元素與同一元素內的屬性值?
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 =「(\ W *?)」,但是我也可能得到字符串:S或類似的東西,所以我改變了它爲「(。*?)」,但恐怕會出現這種情況,可能會失敗。
任何人都知道更好,更安全的方式?
在語言,你想解決? JavaScript或ecmascript? –
沒關係,也許可以將你的'。* \/i>'改成'。*?\/i>',這樣你的文字 – Fallenhero