Класс отрицательных символов [^#]
соответствует и использует символ, который не является #
.Таким образом, точка после t
сопоставляется во время первой итерации, а второе совпадение не происходит.
Вы можете использовать
s.replace(/(^|\D)\.(?!#)/g, '$14')
См. Демонстрационный пример regex .
Подробности
(^|\D)
- Группа захвата 1: либо начало строки (^
), либо (|
) любой символ другойчем цифра (\D
) ( ПРИМЕЧАНИЕ : если .
в начале строки не следует трогать, используйте (\D)
) \.
- точка (?!#)
- нет #
разрешено сразу справа от текущего местоположения.
JS demo:
console.log(
"i.t.".replace(/(^|\D)\.(?!#)/g, '$14')
);