JavaScript — заменить последнее слово звездочкой или двумя последними словами

Замените последнее слово звездочкой или последние два слова

Заинтересовавшись, можно ли это сделать в JavaScript без обратного вызова, я придумал

 str = str.replace(/^(w W w W b)w?|(?!^)(W*)w/gy, '$1$2*'); 

Посмотреть эту демонстрацию на regex101

Идея может показаться немного запутанной, но, похоже, работает нормально. Это должно произойти с ошибкой в ​​одном или двух словах, но начаться, как только появляется символ слова после первых двух слов. Важно использовать липкий флаг y который похож на якорь G (продолжить при последнем совпадении), но всегда должен начинаться.

Чтобы не добавить дополнительную звездочку, … b)w? … часть после первых двух слов имеет важное значение. Граница слова заставит начинать третье слово, но первая группа захвата будет закрыта после b и первый символ третьего слова будет использован, но не захвачен для правильного соответствия количеству звездочек.

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

 var strs = ['Foo', 'Foo Bar B', 'Laura Torres Bermudez', 'Maria Fernanda Gonzales Lopez']; strs = strs.map(str ={amp}gt; str.replace(/^(w W w W b)w?|(?!^)(W*)w/gy, '$1$2*')); console.log(strs); 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector