亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號