我想提取兩個*. 一個樣品:
That *is a* simple * demo*. This * will show * my problem.
所以。我想要星星之間的文字。但沒有任何空格。因此,如果我使用 matchAll,我希望得到以下結果:
["is a", "demo", "will show"]
但我的正則運算式不會洗掉空格。這里是:
var regex = /(\*\s{0,})(\s{0}[\w\s] \s{0})(\s{0,}\*)/ig;
最后,第一個空格被正確洗掉。但是結尾的空格不是(例如“將顯示”)。
問候,弗洛里安
uj5u.com熱心網友回復:
您必須使用量詞的貪婪性,并使用排除空格和星號的字符類來定位最后一個字符:
/\*\s*([^*]*[^\s*])\s*\*/
這里[^*]*貪婪地匹配所有內容,直到結束星號。[^\s*]強制捕獲組的最后一個字符不是空格字符,并強制回溯(前一個量詞的)直到這個。
uj5u.com熱心網友回復:
let str = "That *is a* simple * demo*. This * will show * my problem.";
let arr = str.match(/\*[^*] \*/g).map(m => m.replace(/\*([^*] )\*/, "$1").trim());
console.log(arr); // ["is a", "demo", "will show"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488778.html
標籤:javascript 正则表达式
