表情拼写的表情符号搞砸了

时间:2017-08-07 12:58:06

标签: javascript regex

我正在与一些基本的表情符号建立一个简单的聊天。因此,当用户例如键入:)时,输入字段中会显示一个笑脸表情符号。

然而,当涉及到表情符号:/时,我的正则表达式失败了,原因是它弄乱了URL。 (请记住,在密钥上触发表情符号检测)。

示例测试文本:

  

您好,请访问我的网站http://www.example.comhttps://www.example.com:/://

因此,总结一下,当:/http开始时,正则表达式不得替换为https

目前在我的地图中我有这个:"[^http?s]:/{1}(?!/)": "1F615"但是由于一些奇怪的原因,它会“在替换时吃掉前一个角色”。

2 个答案:

答案 0 :(得分:1)

由于问题是:/搞砸了http://,并且JavaScript不支持lookbehinds(“检查这是不是之前发生/不发生”),我认为最简单的解决方案只是检查:/是否(不)跟随另一个/

":/(?!/)" : "1F615"

值得注意的是,前瞻(JavaScript支持 )实际上并不匹配后续/,它只是确保它不在那里。

答案 1 :(得分:0)

这应该有效

function reverse(s){
    return s.split("").reverse().join("");
}
function getMatch(str){
	const regex = /\/+\:(?!s{0,1}ptth)/g;
	const subst = ``;
	const result = reverse(reverse(str).replace(regex, subst));
	console.log(result);
}


getMatch(`Hello could you please visit my website at http://www.example.com or https://www.example.com :/ ://`);

由于Javascript不支持负面后瞻,但确实支持负前瞻,我们通过反转字符串,替换然后再次反转来利用这个优势

demo for reversed string