我有一個帶有自定義標簽的字串,并嘗試獲取工具提示的文本并將其添加到<span>屬性title 中。我[message]用<span>but how to get the text property by code替換了自定義標記。我試著用一些選項match和includes,但也許我錯了。如果有人可以幫助我,我將不勝感激。Тhanks。
let obj = [
{
code: 'MESSAGE_1',
text: 'Basic tooltip text',
type: 'TOOLTIP'
},
{
code: 'MESSAGE_2',
text: 'Again, basic tooltip text',
type: 'TOOLTIP'
},
];
let str = 'A really ironic artisan [message type="TOOLTIP" code="MESSAGE_1"]whatever keytar[/message], scenester farm-to-table banksy Austin twitter handle freegan cred raw denim [message type="TOOLTIP" code="MESSAGE_2"]single-origin[/message] coffee viral.'
let updateStr = str.replace(/(\[message[^\]]*\])(. ?)(\[\/message\])/g, '<span title="">$2</span>');
預期輸出:
A really ironic artisan <span class="tooltip" title="Basic tooltip text">whatever keytar</span>, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim <span title="Again, basic tooltip text">single-origin</span> coffee viral.
uj5u.com熱心網友回復:
您可以使用
let obj = [
{
code: 'MESSAGE_1',
text: 'Basic tooltip text',
type: 'TOOLTIP'
},
{
code: 'MESSAGE_2',
text: 'Again, basic tooltip text',
type: 'TOOLTIP'
},
];
let str = 'A really ironic artisan [message type="TOOLTIP" code="MESSAGE_1"]whatever keytar[/message], scenester farm-to-table banksy Austin twitter handle freegan cred raw denim [message type="TOOLTIP" code="MESSAGE_2"]single-origin[/message] coffee viral.'
let updateStr = str.replace(/\[message[^\]]*\scode="([^"]*)"[^\]]*]([\w\W]*?)\[\/message]/g, (_,code,text) => `<span title="${obj.find(x=> x.code == code).text}">${text}</span>`);
console.log(updateStr);
在\[message[^\]]*\scode="([^"]*)"[^\]]*]([\w\W]*?)\[\/message]正則運算式匹配
\[message-[message文字[^\]]*- 零個或多個字符,除了]\scode="- 單個空格和code="文本([^"]*)- 第 1 組(code替代):任何零個或多個字符,除了""[^\]]*]-",除]然后一個]字符之外的任何零個或多個字符([\w\W]*?)- 第 2 組(text替換變數):盡可能少的零個或多個字符\[\/message]- 一個[/message]字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366600.html
標籤:javascript 正则表达式 细绳 代替
上一篇:計算從X到Y的完成百分比
