Regex Javascript untuk Membatasi jumlah karakter per baris

Aug 26 2020

Saya mencoba membuat Ekspresi Reguler JS untuk membatasi jumlah karakter per baris di area teks html. Idealnya saya lebih suka memilikinya sebagai Javascript Regex karena lebih mudah digunakan untuk mesin validasi formulir kami.

Saya ingin membuat ekspresi reguler yang memvalidasi bahwa sebuah string memiliki 10 karakter per baris, dan maksimal 3 baris

Idenya adalah untuk memvalidasi string seperti berikut:

01234567890
a
b

Baris pertama di sini memiliki 11 karakter jadi seluruh string harus ditolak /

a
b
c
d

Teks ini memiliki 4 baris jadi harus ditolak.

Saya sudah mencoba dengan regex berikut tetapi tidak berfungsi seperti yang diharapkan:

^((?:\n)?[^\n]{0,10}){0,3}$

ada petunjuk tentang apa yang saya lakukan salah?

Jawaban

1 WiktorStribiżew Aug 26 2020 at 19:32

Kamu bisa memakai

^.{0,10}(?:\r?\n.{0,10}){0,2}$

Lihat demo regex

Detail

  • ^ - awal dari string
  • .{0,10} - nol hingga sepuluh karakter selain karakter baris baru
  • (?:\r?\n.{0,10}){0,2} - nol, satu atau dua kemunculan
    • \r?\n - Akhiran garis CRLF atau LF
    • .{0,10} - nol hingga sepuluh karakter selain karakter baris baru
  • $ - akhir string.

JavaScript:

const valid_rx = /^.{0,10}(?:\r?\n.{0,10}){0,2}$/;
const testFunc = () => {
    if(!valid_rx.test(document.all.mytextarea.value))
    {
        console.log("Please use correct format.");
        return false;
    }
}
<textarea id="mytextarea" cols="50" rows="10">a
b
c
</textarea>
<button onclick="testFunc()">Click Me</button>