3 回答
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
正則表達(dá)式
\*([^\*]+)\*
let str = 'text *inner text 1* text2 *inner text 2*'
console.log(str.replace(/\*([^\*]+)\*/g, '<span>$1</span>'))
演示
https://regex101.com/r/wj9WkA/1/
TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用計(jì)數(shù)器和余數(shù)運(yùn)算符,回調(diào)replace:
let counter = 0;
result = original.replace(/[*]/g, () => ++counter % 2 ? "<span>" : "</span>");
現(xiàn)場(chǎng)示例:
const original = "text *inner text 1* text2 *inner text 2*";
let counter = 0;
const result = original.replace(/[*]/g, () => ++counter % 2 ? "<span>" : "</span>");
console.log(result);
這是有效的,因?yàn)?code>1 % 2它1是真實(shí)的,但2 % 2它0是虛假的,并且3 % 2是1真實(shí)的......
另一種方法是使用正則表達(dá)式來(lái)搜索兩個(gè)之間的匹配*,使用捕獲組來(lái)捕獲匹配:
result = original.replace(/\*(.*?)\*/g, "<span>$1</span>");
現(xiàn)場(chǎng)示例:
const original = "text *inner text 1* text2 *inner text 2*";
let counter = 0;
const result = original.replace(/\*(.*?)\*/g, "<span>$1</span>");
console.log(result);
那是假設(shè)純粹基于交替*字符工作真的沒(méi)問(wèn)題。
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用:
str.replace(/([*])([\w ]+)\1/g, '<span>$2</span>');
正則表達(dá)式詳細(xì)信息:
([*])在第 1 組中匹配*并捕獲([\w ]+)匹配 1+ 個(gè)單詞或空格字符并在組 #2 中捕獲\1用于使字符串以與*組 #1 中相同的結(jié)尾替換是
<span>$2</span>將組#2中的字符串包裝在<span>和</span>
演示:
const str = 'text *inner text 1* text2 *inner text 2*';
const res = str.replace(/([*])([\w ]+)\1/g, '<span>$2</span>');
console.log(res);
添加回答
舉報(bào)
