我正在嘗試根據正則運算式匹配將字串拆分為字串的堆疊/陣列。該字串可以嵌入Remix Icon,我將根據定位提取和呈現 HTML 屬性。
客觀的
圖示名稱將被:前后包裹。目標是像這樣拆分字串:
"Select an option:ri-arrow-down-s-line:"--->["Select an option", ":ri-arrow-down-s-line:"]"Download :ri-download-line: or upload :ri-upload-line:"--->["Download ", ":ri-download-line:", " or upload ", ":ri-upload-line:"]":ri-download-line:"--->[":ri-download-line:"]
發生了什么
我嘗試使用this.label.split(/:ri-.*:/),但它不包含結果堆疊中的圖示名稱,并且不適用于重復。像“下載:ri-download-line:或上傳:ri-upload-line:”這樣的東西給出了['Download ', '']這樣的輸出。
- 改進 1:使用
/:ri-[^:]*:/改進了字串拆分,并考慮了重復。但是現在我需要弄清楚如何將匹配的正則運算式包含在堆疊中的各個位置
有人可以指出我正確的方向嗎?
uj5u.com熱心網友回復:
您可以使用這個簡單的 refex 進行拆分:
/(?=:ri)/g
只要:ri在右邊,它就會分裂。
請注意,它使用global標志,因此它可以在所有出現時匹配和拆分。
現在你有一個陣列。如果您想要問題中顯示的語法,您可以JSON.stringify在結果中使用。
uj5u.com熱心網友回復:
您可以在拆分中使用捕獲組/(:ri-[^:] :)/以包含在結果中,然后您可能必須從拆分結果中過濾空元素:
const Split = s => s.split(/(:ri-[^:] :)/).filter(Boolean);
console.log(Split("Select an option:ri-arrow-down-s-line:"))
console.log(Split("Download :ri-download-line: or upload :ri-upload-line:"))
console.log(Split(":ri-download-line:"))
uj5u.com熱心網友回復:
它可以同時匹配兩者,而不是在 1 上拆分。
例如:
const label = "Download :ri-download-line: or upload :ri-upload-line:"
let arr = label.match(/(:ri-[^:]*:)|[^:] /g);
console.log(arr);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/428168.html
標籤:javascript 数组 正则表达式 细绳 分裂
