2015-10-22 3 views
1

У меня есть текст, например:Как присоединиться к разделенным словам?

Users of MW many times com- 
plain that... 

И я хочу присоединиться слово:

Users of MW many times complain that... 

Я попытался это:

value.replace(/[a-zA-Z][-]((\r\n)|(\n))/g, '') 

, но это решение заменяет также письмо до '-'.

Как это сделать?

ответ

1

Вы можете использовать границу слова до дефиса в конце строки, а затем сопоставить 0 или более пробельных символов

var s = "Users of MW many times com-\nplain that..."; 
 
document.write(s.replace(/\b-$\s*/gm, ''));

Граница слов проверяет, предшествует ли дефис символу слова. Из-за /m модификатор $ соответствует концу строки. \s* соответствует 0 или более символам пробела.

Другой вариант заключается в соответствии с письмом и захватить его и восстановить позже в замене с помощью $1 обратной ссылки:

var s = "Users of MW many times com-\nplain that..."; 
 
document.write(s.replace(/([a-z])-$\s*/igm, '$1'));

Здесь /i также используется для разрешить нечувствительность к регистру.

1

Попробуйте удалить раздел: '[a-zA-Z]'.

0

Вы можете попробовать это:

value.replace(/([a-zA-Z])[-]((\r\n)|(\n))/g, '$1') 
+2

'-' не является особым символом, вам не нужно заключать его между квадратными скобками или избегать его. Если вы хотите группировать объекты в шаблон без их захвата, используйте группу, не связанную с захватом: '(?: ...)'. Вместо того, чтобы использовать это чередование '\ r \ n \ \ n', сделайте CR необязательным:' \ r? \ N' –

+0

Вы правы, конечно, но я хотел как можно меньше как можно изменить в оригинале, особенно если это не ошибка * per se * просто избыточная/неэлегантная. И кроме того: не все люди вроде Appple ;-) – deamentiaemundi

Смежные вопросы