2015-04-24 2 views
0

У меня есть эта строка:заменить все вхождения в строку, используя JavaScript

«dsfnsdfksh [аа] lkdfjldfjgljd [аа]»

Мне нужно найти все occurrencies из [аа] и заменить ее на другую строку, например: dd

Как я могу это сделать?

+0

Что вы уже пробовали? –

+0

Возможный дубликат [Замена всех вхождений строки в JavaScript] (http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – penner

ответ

2

Вы можете использовать регулярное выражение с флагом g. Обратите внимание, что вам придется бежать [ и ] с \

//somewhere at the top of the script 
 
if (!RegExp.escape) { 
 
    RegExp.escape = function(value) { 
 
    return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") 
 
    }; 
 
} 
 

 

 

 
var string = "dsfnsdfksh[aa]lkdfjldfjgljd[aa]"; 
 

 
var pattern = '[aa]'; 
 
var regex = new RegExp(RegExp.escape(pattern), 'g'); 
 
var text = string.replace(regex, 'dd'); 
 
console.log(text)

+0

Это работает, но если я нужно заменить шаблон переменной не работает, например, var pattern = '/ \ [' + 'aa' + '\]/g' не работает – cmonti

+0

@cmonti см. обновление –

+0

Шаблон (ETA: that WAS), переданный в 'replace()' в ответе выше, не является строкой - если вы посмотрите близко, вы увидите, что вокруг него нет кавычек. Однако документы для 'replace()' do предлагают форму, которая примет строку. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace –

0

Вы можете использовать .replace для этого. Вот пример:

HTML

<!DOCTYPE Html /> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <input type="text" id="theInput" /> 

     <input type="submit" value="replace" id="btnReplace"/> 

     <script type="text/javascript" src="theJS.js"></script> 
    </body> 
</html> 

JavaScript

var fieldInput = document.getElementById("theInput"); 
var theButton = document.getElementById("btnReplace"); 

theButton.onclick = function() { 
    var originalValue = fieldInput.value; 
    var resultValue = originalValue.replace(/\[aa\]/g, "REPLACEMENT"); 
    fieldInput.value = resultValue; 
} 
0

С этим я могу заменить все occurrencies:

var pattern = '[aa]'; 
var string = "dsfnsdfksh[aa]lkdfjldfjgljd[aa]"; 

var text = string.replace(new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), 'dd'); 

console.log(text); 
Смежные вопросы