2016-03-04 2 views
2

У меня есть слово, mississippi, и я хочу заменить первый sss так, чтобы слово было misissippi. Возможно ли это с регулярным выражением?Есть ли способ заменить двойные буквы одним в JavaScript?

Я получил это далеко var filtered = oldString.replace(/[^\w\s]|(.)\1/i, "");

Но это просто заменяет двойной ничего. Я хочу заменить одной буквой.

+0

Итак, вы * хотите * версию с орфографическими ошибками? – j08691

+6

Нет, он хочет версию * *. ;) –

+0

@KubaWyrostek - хорошо сыграно – j08691

ответ

4

С опережающего просмотра (в данном случае второй ы не соответствует, но его присутствие только проверенные)

var filtered = oldString.replace(/[^\w\s]|(.)(?=\1)/i, ""); 

или с помощью захвата группы и обратной ссылки в строке замены (замена строка является содержание группы захвата):

var filtered = oldString.replace(/[^\w\s]|(.)\1/i, "$1"); 
+0

Какова цель '[^ \ w \ s] |' здесь на самом деле? Не было бы '/ (\ w) \ 1/i' достаточно? –

+0

@KubaWyrostek: возможно, он хочет удалить все, что не является символом слова или пробелом в одно и то же время. Заметим, что в этом случае лучше добавить квантификатор: '/ [^ \ w \ s] + | (.) (? = \ 1)/i' –

+1

Нет - просто хотите превратить два' s'' в '' '' '' ' – Shamoon

1

вы должны рассказать функцию заменить то, что вы хотите заменить матч: var filtered = oldString.replace(/[^\w\s]|(.)\1/i, "s");