2016-07-15 9 views
0

У меня проблема с regexp для замены html-кода в строке. Я пробовал онлайн-тестировщик регулярного выражения с совпадением, но что-то заставляет меня заменить. $ {ProductEAN} - это то, что я хочу заменить. Любая идея, что не так?Javascript заменить regex не работает

Строка здесь:

<label for="ProductEAN" id="ProductEAN" class="col-sm-3 control-label">${ProductEAN}</label> 

код Javascript:

let strToReplace = 'ProductEAN'; 
let reg = new RegExp('/(\$\{'+strToReplace+'\})/','g') 
     str.replace(reg,'some text'); 
+0

Обязательно отметьте наилучший ответ, если он вам поможет. Таким образом, он не отображается без ответа. – rvighne

ответ

0

Вам необходимо правильное спасаясь обратный слэш

reg = new RegExp('\\$\\{' + strToReplace + '\\}', 'g'); 

и задание по замене строки.

newString = str.replace(reg,'some text'); 

var element = document.getElementById('ProductEAN'), 
 
    strToReplace = 'ProductEAN', 
 
    reg = new RegExp('\\$\\{' + strToReplace + '\\}', 'g'); 
 

 
element.innerHTML = element.innerHTML.replace(reg,'some text');
<label for="ProductEAN" id="ProductEAN" class="col-sm-3 control-label">${ProductEAN}</label>

+0

Это не проблема. Строка фактически не заменена должным образом. – rvighne

0

Это следует сделать это:

var str = '<label for="ProductEAN" id="ProductEAN" class="col-sm-3 control-label">${ProductEAN}</label>'; 
var strToReplace = 'ProductEAN'; 
var reg = new RegExp('(\\${'+strToReplace+'})','g') 
str.replace(reg,'some text'); 
+1

Downvote for no explain –

2

RegExp конструктор не нужен слэш (/.../) вокруг выражения, то есть только для регулярных выражений литералов. И когда вы используете символы escape-escape-символов, они экранируются в строке, переданной конструктору, но не передаются в фактическое выражение регулярного выражения. Они должны быть двойными. Таким образом, измените строку следующим образом:

let reg = new RegExp('\\$\\{'+strToReplace+'\\}','g'); 
+0

Эта работа для меня, спасибо за объяснение. – robertnovak

-1

Попробуйте это:.

new RegExp('\$\{' + strToReplace + '\}','g') 

При вызове с RegExp, вам не нужно ставить/'s Вам также не нужен() 'ы.

Больше информации здесь: http://www.javascriptkit.com/jsref/regexp.shtml

Кроме того, вы можете избавиться от давайте. Они не нужны.

+0

Зачем вам не нужны скобки? –

+1

«Также вы можете избавиться от let's. Они не нужны». Что вы имеете в виду? Вы понятия не имеете о его контексте здесь, поэтому он, возможно, захочет «давайте». –

+0

Оператор let объявляет локальную переменную области блока, необходимо –

Смежные вопросы