替换字符串 char 但保留大小写类型

2 javascript jquery

我使用以下代码,当用户以大写和小写形式输入某个值时,我将该值标记为粗体,以下代码有效。

var typedVal = oAcF._sTypedChars.toLowerCase();
element.innerHTML = element.innerHTML.replace(typedVal, "<b>" + typedVal + "</b>");
Run Code Online (Sandbox Code Playgroud)

在这里我得到了值并将其设置为小写,因为我想处理用户输入大写的情况

var typedVal = oAcF._sTypedChars.toLowerCase();
Run Code Online (Sandbox Code Playgroud)

这里我取的值可以是例如 aa 并在内部 html 中找到它并添加粗体。

element.innerHTML = element.innerHTML.replace(typedVal, "<b>" + typedVal + "</b>")
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在innerHTML中,例如AA,它将无法工作,因为该值是大写的,我该如何克服它?

我无法使用以下内容,因为我想保留原始大小写的值,因此在此示例中大写......

element.innerHTML = element.innerHTML.toLowerCase().replace(typedVal, "<b>" + typedVal + "</b>")
Run Code Online (Sandbox Code Playgroud)

Mou*_*ser 5

我发现准确理解你的问题有点困难。我想你想要这个:

 var typedVal = oAcF._sTypedChars.toLowerCase();
 var re = new RegExp("("+typedVal.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')+")", "ig");  
 element.innerHTML = element.innerHTML.replace(re, "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)

i 在搜索字符串时使用或忽略大小写,因此aaa也会找到aAa,同时保持大写

它将g在全球范围内执行此操作,或者简单地对它能找到的每个实例执行此操作。

当您在replace中使用变量作为搜索字符串时,您无法应用andignore case标志global,因此您需要使用RegExp构造函数。

.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')用于转义否则会破坏正则表达式的字符。

受到其他帖子和您自己的评论的启发,我也意识到您需要使用捕获组$#。这些是在您在正则表达式部分周围使用括号时创建的。我们只有一个捕获组,因此将其标识为$1

在实践中:

 var typedVal = oAcF._sTypedChars.toLowerCase();
 var re = new RegExp("("+typedVal.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')+")", "ig");  
 element.innerHTML = element.innerHTML.replace(re, "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)
function changeInput(element)
{
     var typedVal = document.querySelector("input").value.toLowerCase();
     var re = new RegExp("("+typedVal.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')+")", "ig");  
     element.innerHTML = element.innerHTML.replace(re, "<b>$1</b>");
}

document.querySelector("button").addEventListener("click", changeInput.bind(window, document.querySelector("div")), false);
Run Code Online (Sandbox Code Playgroud)