使用javascript和正则表达式以unicode替换表情符号的路径

使用javascript和正则表达式以unicode替换表情符号的路径,javascript,regex,Javascript,Regex,我面临着一个关于用unicode替换表情符号路径的问题。我想使用RegEx功能。 我的意思是我想替换: teststring<img src=":/new/emoji/emoji/emoji-E057.png" />thanks<img src=":/new/emoji/emoji/emoji-E415.png" /> 请注意\uE057和\uE415是2个unicode字符。 任何人都可以帮我解决这个问题 致以最诚挚的问候。var str='TestStringTha

我面临着一个关于用unicode替换表情符号路径的问题。我想使用RegEx功能。 我的意思是我想替换:

teststring<img src=":/new/emoji/emoji/emoji-E057.png" />thanks<img src=":/new/emoji/emoji/emoji-E415.png" />
请注意\uE057和\uE415是2个unicode字符。 任何人都可以帮我解决这个问题

致以最诚挚的问候。

var str='TestStringThank',
var str = 'teststring<img src=":/new/emoji/emoji/emoji-E057.png" />thanks<img src=":/new/emoji/emoji/emoji-E415.png" />',
    div = document.createElement("div"),
    imgs,
    regex = /emoji-([a-f0-9]{4})\.png$/i;

div.innerHTML = str;

imgs = [].slice.call( div.getElementsByTagName("img") );

for( var i = 0; i < imgs.length; ++i ) {
    var m = imgs[i].src.match(regex);

    if( m ) {
        imgs[i].parentNode.replaceChild(
            document.createTextNode(
                String.fromCharCode(parseInt(m[1], 16))
            ), 
            imgs[i]
        );
    }
}

var result = div.innerText || div.textContent || "";
//"teststringthanks"
div=document.createElement(“div”), imgs, regex=/emoji-([a-f0-9]{4})\.png$/i; div.innerHTML=str; imgs=[].slice.call(div.getElementsByTagName(“img”)); 对于(变量i=0;i
OP甚至没有说“jQuery”。;-)@Tomalak我用它只是为了让答案更简短,并且可以读写。如果我使用普通的DOM API,我应该担心跨浏览器的问题吗?你赢不了,它需要一页代码。把它当作伪代码。@Tomalak原来是“唯一的”“两倍长:PI实现了完全相同的功能。:-)唯一的问题是OP使用的十六进制代码不是真正的Unicode代码点。不确定您需要
[].slice.call
innerText | | textContent
位做什么。还有一个问题,当我尝试使用在.js文件中编写的此函数运行Qt项目时,它会给我以下错误:错误:写入全局属性“document”无效ReferenceError:找不到variable:document,因此我认为我无法在代码中编写“document”。任何其他解决方案?无论是
U+E057
还是
U+E415
都不是有效的Unicode字符。请解释这些值。@Tomalak它们是专用区域字符。任何字体都可以自由使用自定义字形。
var str = 'teststring<img src=":/new/emoji/emoji/emoji-E057.png" />thanks<img src=":/new/emoji/emoji/emoji-E415.png" />',
    div = document.createElement("div"),
    imgs,
    regex = /emoji-([a-f0-9]{4})\.png$/i;

div.innerHTML = str;

imgs = [].slice.call( div.getElementsByTagName("img") );

for( var i = 0; i < imgs.length; ++i ) {
    var m = imgs[i].src.match(regex);

    if( m ) {
        imgs[i].parentNode.replaceChild(
            document.createTextNode(
                String.fromCharCode(parseInt(m[1], 16))
            ), 
            imgs[i]
        );
    }
}

var result = div.innerText || div.textContent || "";
//"teststringthanks"