我使用以下代码,当用户以大写和小写形式输入某个值时,我将该值标记为粗体,以下代码有效。
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)
我发现准确理解你的问题有点困难。我想你想要这个:
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)
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |