Javascript 尝试在运行中替换字符串,最好的方法是什么?
我试图用一个跨距来替换一些正在运行的文本 例如: 当一个人在打字时,当他们输入“向后”这个词及其后面的空格时,整个句子或其中包含该词的行都会加粗 现在我已经为它设置了CSS类,我一直在尝试将它放入一个span中,但我不确定它是否有效。。。每当有新的事情发生时,它也会重置,所以光标会跳回到开头,它不会让我前进 以下是我到目前为止的情况(我的正则表达式现在也错了):Javascript 尝试在运行中替换字符串,最好的方法是什么?,javascript,html,css,regex,Javascript,Html,Css,Regex,我试图用一个跨距来替换一些正在运行的文本 例如: 当一个人在打字时,当他们输入“向后”这个词及其后面的空格时,整个句子或其中包含该词的行都会加粗 现在我已经为它设置了CSS类,我一直在尝试将它放入一个span中,但我不确定它是否有效。。。每当有新的事情发生时,它也会重置,所以光标会跳回到开头,它不会让我前进 以下是我到目前为止的情况(我的正则表达式现在也错了): 功能替换(e){ 如果(e.keyCode==13){ 元素=document.getElementById(“脚本”); rg=/
功能替换(e){
如果(e.keyCode==13){
元素=document.getElementById(“脚本”);
rg=/^INT/;
element.innerHTML=element.innerHTML.replace(
rg,
'$1'
);
};
};代码>
代替
正如@Mouser所提到的,您的正则表达式将在开头查找INT字符串
这是正确的代码。你只需要根据需要修改你的正则表达式。我已经测试了它和它的工作
function replace(e) {
if (e.keyCode == 13) {
element = document.getElementById("script");
var _str = element.innerHTML.trim("")
rg = /INT/;
element.innerHTML = _str.replace(
rg,
function($1) {
console.log($1)
return '<h1><span id="bold">' + $1 + '</span></h1>'
}
);
//Set cursor position
var range = document.createRange()
var _lastDom = element.childNodes[element.childNodes.length - 1];
var end = '';
if(_lastDom && _lastDom.innerHTML == undefined) {
end = _lastDom.length
} else {
_lastDom
end = 1
}
range.setStart(_lastDom,end)
range.setEnd(_lastDom,end)
sel = document.getSelection()
sel.removeAllRanges()
sel.addRange(range)
};
};
功能替换(e){
如果(e.keyCode==13){
元素=document.getElementById(“脚本”);
var_str=element.innerHTML.trim(“”)
rg=/INT/;
element.innerHTML=\u str.replace(
rg,
职能(1美元){
console.log(1美元)
返回“”+$1+“”
}
);
//设置光标位置
var range=document.createRange()
var_lastDom=element.childNodes[element.childNodes.length-1];
var-end='';
if(_lastDom&&_lastDom.innerHTML==未定义){
end=\u lastDom.length
}否则{
_拉斯特姆
结束=1
}
range.setStart(_lastDom,end)
range.setEnd(_lastDom,end)
sel=document.getSelection()
选择removeAllRanges()
选择添加范围(范围)
};
};
可能是一种更好的方法,但类似的方法可能会有所帮助
var thepara=document.getElementById('thepara').innerHTML;
document.getElementById('thetext')。addEventListener('keyup',函数(e){
var thetext=this.value;
var thelength=this.value.length;
var thestart=文本的参数索引;
var found=参数substr(开始,长度);
如果(找到!=“n”){
var newstring=“”+找到+”;
document.getElementById('thepara').innerHTML=thepara.replace(已找到,新闻字符串);
}
});代码>
.bold{font-weight:bold;}
这是伦敦东南部郊区一个阳光明媚的好天气
由于^
的缘故,您的正则表达式在字符串开头寻找INT。通过将INT括在括号中来捕获它。您的replace函数现在仅在返回后激发。这是故意的?$1在原始代码中是正确的。这将生成错误@harpreetinghan替换中的onymous函数是不必要的:“$1”
应该足够作为替换字符串。@Mouser,实际上我不熟悉这个方法