我正在嘗試使用JavaScript String.replace方法來操作降價代碼。我想讓所有的標題都是統一的,所以我需要採用各種各樣的##,###,####等組合,並在它們之後放置一個空格。如何用REGEX替換未知數量的相同字符?
所以 - 「##」 變成 「##」 和 「####」 變成 「####」 等
我想使用全局標誌:
md.replace("/#/g", "# ");
這不會考慮所有這些散列符號的組合。我怎樣才能做到這一點?
我正在嘗試使用JavaScript String.replace方法來操作降價代碼。我想讓所有的標題都是統一的,所以我需要採用各種各樣的##,###,####等組合,並在它們之後放置一個空格。如何用REGEX替換未知數量的相同字符?
所以 - 「##」 變成 「##」 和 「####」 變成 「####」 等
我想使用全局標誌:
md.replace("/#/g", "# ");
這不會考慮所有這些散列符號的組合。我怎樣才能做到這一點?
一種方法是:
md = md.replace(/([#])([^# ])/g, '$1 $2');
([#])
檢查#
和([^# ])
檢查除散列或空格以外的任何內容。然後在它們之間增加一個空格。因此,額外的空間不會被添加到### a
形式的字符串中。
有趣的替代方案不確定它是否真的更高效,並且稍微難以閱讀 – Sam
您可以使用下面的正則表達式替換的兩個或兩個以上連續#
字符的發生:
// Two or more # characters
md = md.replace(/(#{2,})/, "$1 ")
// One or more # characters
md = md.replace(/(#+)/, "$1 ")
如果要追加一個#
字符後面輸入一個空格,以及,你可以改變量詞從{2,}
到簡單的+
。
我認爲他仍然有1次,但很難說... – Sam
我會後我的建議,因爲我也已經準備好文章,但看到一些答案後,在第一扣:
md = md.replace(/#+/g, '$& ');
我覺得這個人是更好,因爲:
g
選項將在輸入字符串中處理所有###
s$&
反向引用實際上是整個比賽)。捕獲組會將捕獲的文本保存在堆棧中,這可能比沒有它們的文件慢一些。在這裏,我們不需要捕獲組,爲什麼使用它們呢?*我最後加了「g」,以確保它處理所有實例。* - 這正是我在我的評論中提出的建議。 –
很好的使用'$&' - 總是忘記這一點。 – Sam
也許,'MD = md.replace(/#+ /克,「$ & ');'將工作最適合你的。 –