Javascript标记子字符串onchange事件

Javascript标记子字符串onchange事件,javascript,regex,string,search,replace,Javascript,Regex,String,Search,Replace,我试图突出显示一个大字符串的子字符串。以下代码仅在子字符串是大字符串的第一个字母时高亮显示。我怎样才能解决这个问题?提前谢谢 function search() { var text = document.getElementById("searchText").value; if (!text) return; var regex = new RegExp(text, 'gi'); var str = document.g

我试图突出显示一个大字符串的子字符串。以下代码仅在子字符串是大字符串的第一个字母时高亮显示。我怎样才能解决这个问题?提前谢谢

 function search() {
        var text = document.getElementById("searchText").value;

        if (!text) return;

        var regex =  new RegExp(text, 'gi');
        var str = document.getElementById("input").innerHTML;
        var n=str.match(regex);

            document.getElementById("input").innerHTML = document.getElementById("input").innerHTML.replace(str, '<span style="background-color:clear;">'+str+'</span>'); // clear 
            document.getElementById("input").innerHTML = document.getElementById("input").innerHTML.replace(n, '<span style="background-color:yellow;">'+n+'</span>');


    }
函数搜索(){
var text=document.getElementById(“searchText”).value;
如果(!text)返回;
var regex=新的RegExp(文本“gi”);
var str=document.getElementById(“输入”).innerHTML;
var n=str.match(regex);
document.getElementById(“输入”).innerHTML=document.getElementById(“输入”).innerHTML.replace(str,“+str+”);//清除
document.getElementById(“输入”).innerHTML=document.getElementById(“输入”).innerHTML.replace(n,+n+);
}
str.match(regex)返回一个数组,这就是替换无法正常工作的原因

replace方法可以接受一个regexp,这是您应该提供给它的(以实现全局搜索)

document.getElementById(“输入”).innerHTML=str.replace(regex,“+text+”);
试试这个:-

函数搜索(){
var hid=document.getElementById('hidtxt').value;
如果(hid.length==0)hid.value=document.getElementById(“输入”).innerHTML;
var text=document.getElementById(“searchText”).value;
如果(!text)返回;
var regex=新的RegExp(文本“gi”);
document.getElementById(“输入”).innerHTML=hid.replace(regex,$&');
}

您可以使用
$&
而不是连接
文本
。谢谢@plalx我在修复OP问题时没有想到这一点:)
document.getElementById("input").innerHTML = str.replace(regex, '<span style="background-color:yellow;">'+text+'</span>');
function search() {
    var hid = document.getElementById('hidtxt').value;
    if(hid.length == 0) hid.value=document.getElementById("input").innerHTML;
        var text = document.getElementById("searchText").value;
       if (!text) return;
        var regex =  new RegExp(text, 'gi');
            document.getElementById("input").innerHTML = hid.replace(regex, '<span style="background-color:yellow;">$&</span>');


    }