Tampaknya, menurut spesifikasi HTML5 , properti nilai dari elemen textarea harus mengembalikan '\ r \ n' untuk baris baru:
Elemen nilai didefinisikan sebagai nilai baku elemen dengan transformasi berikut diterapkan:
Ganti setiap kemunculan karakter "CR" (U + 000D) yang tidak diikuti dengan karakter "LF" (U + 000A), dan setiap kemunculan karakter "LF" (U + 000A) yang tidak diawali dengan "CR" ( U + 000D), dengan string dua karakter yang terdiri dari pasangan karakter U + 000D CARRIAGE RETURN "CRLF" (U + 000A).
Mengikuti tautan ke 'nilai' memperjelas bahwa ini merujuk ke properti nilai yang diakses di javascript:
Kontrol bentuk memiliki nilai dan pemeriksaan. (Yang terakhir hanya digunakan oleh elemen masukan.) Ini digunakan untuk menjelaskan bagaimana pengguna berinteraksi dengan kontrol.
Namun, di kelima browser utama (menggunakan Windows, 27/11/2015), jika '\ r \ n' ditulis ke textarea, '\ r' dihilangkan. (Untuk menguji: var e = document.createElement ('textarea'); e.value = '\ r \ n'; alert (e.value == '\ n');) Ini berlaku untuk IE sejak v9. Sebelumnya, IE mengembalikan '\ r \ n' dan mengubah '\ r' dan '\ n' menjadi '\ r \ n' (yang merupakan spesifikasi HTML5). Jadi ... saya bingung.
Agar aman, biasanya cukup menggunakan '\ r? \ N' dalam ekspresi reguler, bukan hanya '\ n', tetapi jika urutan baris baru harus diketahui, pengujian seperti di atas dapat dilakukan dalam aplikasi.