Кажется, что, согласно спецификации HTML5 , свойство value элемента textarea должно возвращать '\ r \ n' для новой строки:
Элемента значение определяется как исходное значение элемента с применено следующее преобразование:
Заменить все вхождения символа «CR» (U + 000D), за которым не следует символ «LF» (U + 000A), и каждое вхождение символа «LF» (U + 000A), которому не предшествует «CR» ( U + 000D) двухсимвольной строкой, состоящей из пары символов U + 000D CARRIAGE RETURN «CRLF» (U + 000A).
После ссылки на 'value' становится ясно, что это относится к свойству value, доступному в javascript:
Элементы управления формой имеют ценность и проверяемость. (Последний используется только элементами ввода.) Они используются для описания того, как пользователь взаимодействует с элементом управления.
Однако во всех пяти основных браузерах (использующих Windows, 27.11.2015), если '\ r \ n' записывается в текстовое поле, '\ r' удаляется. (Для проверки: var e = document.createElement ('textarea'); e.value = '\ r \ n'; alert (e.value == '\ n');) Это верно для IE, начиная с версии v9. До этого IE возвращал '\ r \ n' и конвертировал '\ r' и '\ n' в '\ r \ n' (что является спецификацией HTML5). Итак ... я в замешательстве.
В целях безопасности обычно достаточно использовать '\ r? \ N' в регулярных выражениях вместо просто '\ n', но если последовательность новой строки должна быть известна, в приложении можно выполнить тест, подобный приведенному выше.