Добавить новые строки перед выбранными символами дефиса

У меня в тексте есть такая закономерность:

PSA-изображение отчета о

-15.12.1402 (05.03.2024): 0,15 нг/мл

-19.04.1403 (09.07.2024): 0,36нг/мл.

И у меня есть приведенный выше текст в виде одной строки:

let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`

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

Я попробовал этот код...

string = string.replaceAll('-', '\n-');

... но перед каждым дефисом добавляется новая строка. Как мне сопоставить только те, за которыми непосредственно следует число?

let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`
string = string.replaceAll('-', '\n-');
console.info(string);

🤔 А знаете ли вы, что...
С помощью JavaScript можно валидировать данные на стороне клиента, что улучшает пользовательский опыт.


52
2

Ответы:

Вы могли бы попробовать

string.replace(/(?=-\d)/g, '\n')

let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`

const formatted = string.replace(/(?=-\d)/g, '\n');

console.info(formatted);

Решено

Используйте положительный просмотр вперед, чтобы обнаружить наличие цифры после дефиса.

let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`
string = string.replaceAll(/-(?=\d)/g, '\n-');
console.info(string);

Дополнительную информацию можно найти по адресу regex101.