簡體   English   中英

JavaScript由指數編號替換()正則表達式

[英]JavaScript replace() regex by index number

我有以下字符串和正則表達式:

var string = "Dear [to name], [your name] has decided to share this [link]"; 
var patt = /\[+[A-Za-z0-9]+\]/;

我希望能夠使用動態輸入更改每個括號中的變量。 我如何使用match()replace()來定位此正則表達式的第1,第2和第3次出現?

編輯:目前,如果我做像document.write(body.match(patt)); 它只匹配最后一個[鏈接]

編輯:整個字符串取自文本框的值。 每個括號的值都取自其他文本輸入,需要在將文本放回文本框之前插入到字符串中。

使用函數作為replace方法的第二個參數:

var replacement = { "to name": "Joe", "your name": "Fred", "link": "foo" };

string = string.replace(/\[([^\]]+)\]/g, function (_, group) {
    return replacement[group];
});

哦,你的模式只匹配[link]文本的原因是因為它只允許括號之間的字母數字字符,而不是空格。

編輯:如果括號的內容不重要,您只想按順序替換它們,請使用數組而不是哈希:

var replacement = [ "Joe", "Fred", "foo" ];
var index = 0;
string = string.replace(/\[[^\]]+\]/g, function () {
    return replacement[index++];
});

假設這些括號內的項目總是相同的,您根本不必使用正則表達式。

var string = "Dear [to name], [your name] has decided to share this [link]"; 
var name = 'Bob';
var your_name = 'Jacob';
var link = 'http://google.com';

string = string.replace( '[to name]', name ).replace( '[your name]', your_name ).replace( '[link]', link )

alert( string )​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM