Javascript - захватить повторяющиеся последовательности? - PullRequest
0 голосов
/ 25 декабря 2018

Допустим, у меня есть строка,

"Testing   éééé     123" 

Я хочу убрать все вхождения

é 

и все пробелы, которые идут до и после, и просто заменитьэто с одним пробелом, таким образом это заканчивается как:

"Testing 123" 

Как вы фиксируете повторение последовательности символов, то есть повторяющихся

é

, дляJavascript регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Обратные ссылки - ваш друг для такого рода вещей.

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

/(&#x[0-9a-f]+;)\1+/i

Это будет соответствовать первому обнаруженному им символьному объекту, затем перейдет к цепочке любого числа идентичных сущностей после него.

Если вы хотите удалить повторяющиеся символы, вы можете даже расширить его до следующего:

/(.+)\1+/i

, который будет соответствовать любой последовательности повторяющихся символов (включая пробелы) и составных шаблонов.Однако обратите внимание, что это избавит от повторяющихся букв в тексте, если они есть.

0 голосов
/ 25 декабря 2018

Поместите последовательность в группу и повторите эту группу с + - тогда вы можете заменить это (и окружающие пробелы) на один пробел:

const input = "Testing   éééé     123";
const output = input.replace(/ *(?:é)+ */, ' ');
console.log(output);

Если может быть дополнительные повторяющиеся последовательности, например

"Testing   éééé     123 foobar éé baz";

Затем используйте также глобальный флаг:

.replace(/ *(?:é)+ */g, ' ');
//                        ^
...