2017-09-21 41 views
-3

我有這種形式的regEx,/\\.br<[0-9]+>\\/g,我想在正文中用RegEx中的<>之間指示的新行數替換它。取決於RegEx的價值JS

Ex。輸入

Hello \.br<3>\ World! 

輸出:

Hello 


World! 
+4

歡迎來到SO。請參閱[如何提出一個好問題](https://stackoverflow.com/help/how-to-ask)。這不是一個代碼寫入服務。 – Utkanos

+1

查看'String.prototype.replace'上的回調。 –

+0

不是*空格數*,但是我認爲換行符的數量 – RomanPerekhrest

回答

0

你的正則表達式/\\.br<[0-9]+>\\/g不正確。在正則表達式上下文中的.表示「除換行符之外的任何字符」。因此,你需要避開你的正則表達式中的點。

/\\\.br<[0-9]+>\\/g 
/(\\\.br<([0-9]+)>\\)/g 

接下來,當按照T.J.所推薦的看String.prototype.replace時。克勞德以下解決方案浮現在腦海:

function replacer(match, p1, p2, offset, string) { 
 
     let result = ''; 
 
     for (let i = 0; i < Number(p2); i++) { 
 
     result += '\n'; 
 
     } 
 
     return result; 
 
    } 
 
    var newString = String('Hello \\.br<3>\\ World!').replace(/(\\\.br<([0-9]+)>\\)/g, replacer); 
 
    console.log(newString);

注意,在代碼中的硬編碼字符串包含2 \\,因爲這是一個轉義字符。當您通過某種文本字段從用戶那裏收到字符串時,輸入一個\就足夠了。