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

Я хочу удалить все вхождения шаблона строки числа, заключенного в квадратные скобки, например [1], [25], [46], [345] (я думаю, что до 3 символов в скобках должно быть).Я хочу заменить их пустой строкой "", т.е. удалить их.

Я знаю, что это можно сделать с помощью регулярных выражений, но я довольно новичок в этом.Вот что у меня есть, которое ничего не делает:

var test = "this is a test sentence with a reference[12]";
removeCrap(test);
alert(test);

function removeCrap(string) {

var pattern = new RegExp("[...]"); 
string.replace(pattern, "");

}

Может кто-нибудь помочь мне с этим?Надеюсь, вопрос ясен.Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 июля 2011
  1. [] имеет особое значение в регулярных выражениях, оно создает класс символов .Если вы хотите сопоставить эти символы буквально, вы должны их избежать.

  2. replace [документы] заменяет только первое вхождение строки / выражения, если не установлен глобальный флаг / модификатор.

  3. replace возвращает новая строка, она не меняет строку на месте.

Имея это в виду, это должно сделать это:

var test = "this is a test sentence with a reference[12]";
test = test.replace(/\[\d+\]/g, '');
alert(test);

Объяснение регулярного выражения:

В JavaScript /.../ - это регулярное выражение .g является глобальным флагом.

  • \[ соответствует [ буквально
  • \d+ соответствует одной или нескольким цифрам
  • \] соответствует] буквально

Чтобы узнать больше о регулярных выражениях, взгляните на документацию MDN и http://www.regular -expressions.info / .

1 голос
/ 02 июля 2011

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

test = test.replace(/\[\d+\]/g, '');
  • \[, потому что [ сам по себе вводит диапазон символов
  • \d+ - любое количество цифр
  • \] как указано выше
  • /g - делайте это для каждого случая

Примечание: вам нужно переназначить результат (либо новой переменной, либо обратно самой себе), поскольку String.replace не меняет исходную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...