为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript ReplaceAll 使用变量而不是字符串进行不区分大小写的搜索

JavaScript ReplaceAll 使用变量而不是字符串进行不区分大小写的搜索

慕丝7291255 2024-01-18 10:42:54
我想replaceAll()在不区分大小写的搜索中使用变量(而不是字符串)执行 JavaScript,但也保留匹配文本的大小写(在返回中)。例如,console.log('doc.p:', doc.p.toString().substring(0, 26))var query = this.manager.store.get('q').value.toString();console.log('query:', query, '| type:', typeof(query))console.log(doc.p.toString().replaceAll(/(dna)/gi, '***$1***'))console.log(doc.p.toString().replaceAll(/(query)/gi, '***$1***'))正在给予doc.p: DNA deoxyribonucleic acid     // target textquery: dna | type: string            // query text***DNA*** deoxyribonucleic acid ...  // [success] case-insensitive search; case-sensitive returnDNA deoxyribonucleic acid ...        // [failure] I've also tried (e.g.) $query, $(query), ... here工作完成后,我将用 HTML 代码替换“***”(仅用于测试/说明)。
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

RegExp您需要使用-创建正则表达式


var reg = new RegExp(`(${query})`, "gi")

var doc = "DNA deoxyribonucleic acid";

var query = "dna"

var exp = `(${query})`

var reg = new RegExp(exp, "gi")

var result = doc.replaceAll(reg, "***$1***");

console.log(result);


查看完整回答
反对 回复 2024-01-18
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

基本上,您想要的是创建动态正则表达式,而不是对其进行硬编码。这是在 的帮助下完成的。RegExp 构造函数,它采用正则表达式和标志的字符串表示形式(我弄乱了字符串大写以演示大小写的保存):


string1 = 'DnA deoxyribonucleic acid'

string2 = 'DNA deoxyribonucleic aCId'


const replacer = (str, replace) => {

  const re = new RegExp(`(${replace})`, 'gi')

  return str.replaceAll(re, '***$1***')

}


console.log(replacer(string1, 'dna'))

console.log(replacer(string2, 'acid'))


查看完整回答
反对 回复 2024-01-18
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

JavaScriptreplace已经具有执行不区分大小写搜索的功能,同时还保留捕获组的原始大小写,例如


var input = "DNA deoxyribonucleic acid";

var output = input.replace(/(dna)/ig, "***$1***");

console.log(output);


查看完整回答
反对 回复 2024-01-18
  • 3 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信