Javascript заменить с помощью регулярных выражений - PullRequest
0 голосов
/ 27 мая 2010
<input type="text" value="[tabelas][something][oas]" id="allInput">
<script type="text/javascript">  

allInput = document.getElementById('allInput');

var nivel = new Array('tabelas', 'produto');
for (var i =0; i < nivel.length ; i++ )
{
 alert(" oi => " + allInput.value + " <-- " + nivel[i]) ;
 var re = new RegExp("^\[" + nivel[i] + "\]\[.+\].+", "g");
alert(re);
 allInput.value = allInput.value.replace(
      re, "OLA");
 alert(" oi 2 => " + allInput.value + " <-- " + nivel[i]) ;
}
</script> 

По сути, я хочу заменить "что-то2" в [tabelas] [что-то] [другое поле] числом, я играл с регулярным выражением и получил другие результаты, используя .replace (/ expression /, xxx) и новый RegExp ().

С наилучшими пожеланиями и спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 27 мая 2010
  1. Вам нужно дважды экранировать, чтобы экранирование видел конструктор регулярных выражений, а не анализатор Javascript. "\[" приведет к строке [, "\\[" приведет к \[.
  2. Имейте в виду, что регулярное выражение \[.+\] соответствует строкам типа [abc][def]. Вы, вероятно, хотите \[\w+\] или что-то подобное.
0 голосов
/ 27 мая 2010

Если вы создаете RegExp из синтаксиса new RegExp(...), тогда вам нужно два обратных слеша для экранирования символа.

new RegExp("^\\[" + nivel[i] + "\\]\\[.+\\].+", "g");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...