JS替换-删除相同的大写规范

时间:2019-05-23 20:00:01

标签: javascript jquery

我正在制作一个脚本,该脚本通过将其包裹在一个范围内来突出显示字符串的一部分。 (突出显示的部分通过表格决定)

现在我已经知道了。

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中进行替换,但这不考虑大小写?

1 个答案:

答案 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标志。