Сейчас я создаю простое приложение, использующее NodeJS для перевода ввода в определенный формат. Для этого я использую следующий фрагмент JavaScript, где входными данными является content.
content = content.replace(/(.+)\n=+$/gm, '<div>$1</div>');
content = content.replace(/(.+)\n-+$/gm, '<p>$1</p>');
Используя это, я ожидал бы следующий код
Message
======
Another Message
------
перевести на
<div>Message</div>
<p>Another Message</p>
Однако я получаю тот же результат, что и ввод (так что ничего не изменилось),
Я пробовал это как с RegExr, так и с тестером RegEx WebStorm, и оба они нашли совпадение. Когда я регистрирую результат content.match(/(.+)\n=+$/gm), я получаю null.
Когда я удаляю \n из RegEx и ввода, кажется, что он совпадает, что заставляет меня думать, что \n вызывает какую-то проблему. Однако мне не известно о каких-либо проблемах, которые это могло вызвать.
^ тот же regexr.com/43ve3
В вашем коде javaScript нет ничего плохого. Можете протестировать здесь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вы используете окна?
попробуйте:
content = content.replace(/(.+)\r\n=+$/gm, '<div>$1</div>');
content = content.replace(/(.+)\r\n-+$/gm, '<p>$1</p>');
в зависимости от ОС и браузера вы можете получить там \n или \r\n (\r обозначает возврат каретки, они могут быть другими причинами для их появления. Но в вашем регулярном выражении вы должны ожидать либо \n, либо \r\n
Редактировать:
Как предлагает Поул Бак, вы можете просто добавить ? после \r для обработки обоих случаев:
content = content.replace(/(.+)\r?\n=+$/gm, '<div>$1</div>');
content = content.replace(/(.+)\r?\n-+$/gm, '<p>$1</p>');
Используйте: '/(.+)\r?\n=+$/gm' Это делает '\ r' необязательным.
У меня отлично работает: jsfiddle.net/khrismuc/o92sa1mu