Javascript RegExp найти и заменить пустые квадратные скобки - PullRequest
0 голосов
/ 09 октября 2011

У меня есть строка, которая содержит что-то вроде name="text_field_1[]", и мне нужно найти и заменить часть '1[]', чтобы я мог увеличивать как это '2[]', '3[]' и т. Д.

Код:

$search = new RegExp('1[]', 'g');
$replace = $number + '[]';
$html = $html.replace($search, $replace)

Ответы [ 4 ]

1 голос
/ 09 октября 2011

Вы можете использовать обратные вызовы.

var $counter = 0;

$html = $html.replace(/1\[\]/g, function(){
    ++$counter;
    return $counter+'[]';
});

Если вам нужно [], которому предшествует любой номер, вы можете использовать \d:

var $counter = 0;
$html = $html.replace(/\d\[\]/g, function(){
    ++$counter;
    return $counter+'[]';
});

Примечание:

  • экранирующие скобки, потому что они являются специальными в регулярном выражении.
  • убедитесь, что в $html есть только шаблон, который необходимо заменить, или он заменит все 1[].
1 голос
/ 09 октября 2011

Вы можете использовать \d в своем регулярном выражении, что означает, что числа onlu использовались до [].Также вам нужно экранировать [] из-за его специальных символов в регулярном выражении.

$search = new RegExp('\\d+\\[\\]', 'g');
$replace = $number + '[]';
$html = $html.replace($search, $replace)

Код: http://jsfiddle.net/VJYkc/1/

0 голосов
/ 09 октября 2011

Вот что-то веселое.Вы можете передать функцию в string.replace.

  var re = /(\d+)(\[\])/g/;
  html = html.replace(re, function(fullMatch, value, braces) {
    return (parseInt(value, 10)+1) + braces;
  }

Теперь вы можете заменить несколько экземпляров # [] в вашей строке.

0 голосов
/ 09 октября 2011

Скобки должны быть экранированы в регулярных выражениях ...

var yourString="text-field_1[]";
var match=yourString.match(/(\d+)\[\]/);
yourString=yourString.replace(match[0], parseInt(match[1]++)+"[]");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...