2014-10-05 22 views
0

這裏是一個小提琴http://jsfiddle.net/aLr2yx8d/替換字符不止一次

$('#inputButton').click(function() {  

    var value = $('#input').val(); 
    var re = /\./g; 
    var output = $('#output'); 

    var text = output.text().replace(re, value); 
    output.html(text); 

}); 

現在我只能一次更新。我想有可能不止一次地更新它。第一次它將替換點(。),第二次它將替換我給出的第一個值。

+2

究竟是什麼你想實現什麼?這個問題並不完全清楚。 – undefined 2014-10-05 16:15:01

+0

您希望用戶能夠將文本置於佔位符內(我假設),但您採取的是完全錯誤的方法。提供更多上下文。 – MarioDS 2014-10-05 16:15:55

+0

[http://i.imgur.com/gqiJWC7.jpg](http://i.imgur.com/gqiJWC7.jpg)我把它看做我想要做的事。 – squarestripe 2014-10-05 16:19:15

回答

1

您可以使用變量來保存您想要更改的變量RegularExpression。 例如:

var regExVal= /\./g; 
$('#inputButton').click(function() {  

    var value = $('#input').val(); 
    var re = regExVal; 
    regExVal= new RegExp(value, "g"); <-- this is how you set the new value 
    var output = $('#output'); 

    var text = output.text().replace(re, value); 
    output.html(text); 

}); 

Here's the JsFiddle

編輯:

正如我在評論中提到,你需要逃避某些字符用作正則表達式,而不是運營商角色。我找到了一個很好的答案in another question。它包括在你的腳本:

function escapeRegExp(str) { 
    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); 
} 

然後,使用value之前,你做這樣的事情:

value = escapeRegExp(value); 
+0

謝謝!現在我明白我做錯了什麼。 – squarestripe 2014-10-05 16:24:59

+1

看着你放的圖片...這不會與星號* ...或^和$這件事。在使用'replace'功能 – 2014-10-05 16:26:52

+0

之前,您需要從輸入值中跳出這些字符。我將如何做到這一點? – squarestripe 2014-10-05 19:07:45