Javascript 用html标记替换textarea中的字符

Javascript 用html标记替换textarea中的字符,javascript,jquery,html,Javascript,Jquery,Html,我正在构建一个应用程序,它有一个需要格式化的文本区域。我不想使用contenteditablediv,所以我认为下一个最好的解决方案是使用普通的textarea,然后用标记替换字符 格式类似于Reddit或Slack $('.actionBtn')。在('click',function()上{ var cursorPos=$('#text').prop('selectionStart'); var cursorPosEnd=$('#text').prop('selectionEnd'); va

我正在构建一个应用程序,它有一个需要格式化的文本区域。我不想使用
contenteditable
div,所以我认为下一个最好的解决方案是使用普通的textarea,然后用标记替换字符

格式类似于Reddit或Slack

$('.actionBtn')。在('click',function()上{
var cursorPos=$('#text').prop('selectionStart');
var cursorPosEnd=$('#text').prop('selectionEnd');
var v=$('#text').val();
var textBefore=v.substring(0,cursorPos);
var textSelected=v.substring(cursorPos,cursorPosEnd);
如果(textSelected==“”){
textSelected=“此处文本”
}
var textAfter=v.substring(游标结束,v.length);
$('#text').val(textBefore+$(this.val()+textSelected+$(this.val()+textAfter);
});
$(#submitBtn')。在('click',function()上{
//TODO:切换到标签
//*成为
//_uu变成
//#c#变成
$('#result').html($('#text').val())
});
.myClass{
颜色:#FF0;
}


您可以轻松地用正则表达式替换字符串中出现的偶数/奇数字符串。例如:

const regex = /\_(.*?)\_/gm;
const str = `Lorem _ipsum_ dolor sit amet, _consectetur adipiscing_ elit, sed 
do _eiusmod_ tempor `;
const subst = `<em>$1</em>`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
const regex=/\\\(.*?\)\/gm;
const str=`Lorem(公共财产)dolor sit amet(公共财产),sed(公共财产)
做临时工;
常量subst=`1`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);
log('替换结果:',结果);

这样做的更多:

var标记={
"*": ["", ""],
"_": ["", ""]
}
var el=document.getElementById(“编辑器”),
val=htmlize(el.值),
display=document.getElementById(“display”);
display.innerHTML=val;
el.addEventListener(“更改”,函数(){
val=htmlize(el.值);
display.innerHTML=val;
});
函数htmlize(内容){
for(标签中的变量i){
var reg=“\\”+i+“\\s”(\\w+);
reg=新的RegExp(reg,“g”);
content=content.replace(reg,function(match,w){
返回标签[i][0]+w+标签[i][1];
});                 
}
返回内容;
}

我是一个非常棒的家伙,一个非常棒的人。你应该知道这一点

这里的
m
模式是无用的。转义下划线是不必要的。不要使用惰性量词,而是使用否定字符类。这个答案是教研究人员糟糕的正则表达式技巧。此答案将无法正确解析
\u请关闭门。\uuuuuuuuuuuuuuuuuuuuuuuuuuuu
。因为您没有包含,此页面收到了两个不同的答案。请通过提供适当复杂的样本输入和准确的期望输出来改进这个不清楚的问题。我指责OP不清楚他们的要求,但这个答案与公认的答案不一样。此答案将仅标记环绕特殊符号后面的第一个“word”子字符串。在问题澄清之前,我将保留对这个答案的冲动。