我正在制作一个脚本,该脚本通过将其包裹在一个范围内来突出显示字符串的一部分。 (突出显示的部分通过表格决定)
现在我已经知道了。
value.replace(term,'<span>'+term+'</span>')
$(document).ready(function(){
var term = $('.n').val();
var matches = ['Tree of life','Life of the tree'];
$('.output>div').remove();
$.each(matches,function(index,value){
$('.output').append('<div>'+value.replace(term,'<b>'+term+'</b>')+'</div>')
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<input type="text" class="n" value="Tree">
<h4>Output</h4>
<div class="output">
</div>
但是事实是,这需要用大写字母表示。
因此,如果我要搜索树:
那么我该如何在JS中进行替换,但这不考虑大小写?
答案 0 :(得分:0)
将replace
的第一个参数转换为不区分大小写的正则表达式,而不只是字符串:
// https://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
const escape = s => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
const pattern = new RegExp(escape(term), 'i');
const result = value.replace(pattern, '<span>'+term+'</span>');
如果要替换所有出现的内容,请同时使用g
标志。