Javascript Regex เพื่อ จำกัด จำนวนอักขระต่อบรรทัด

Aug 26 2020

ฉันกำลังพยายามสร้าง JS Regular Expression เพื่อ จำกัด จำนวนอักขระต่อบรรทัดในพื้นที่ข้อความ html ตามหลักการแล้วฉันต้องการให้เป็น Javascript Regex เนื่องจากใช้งานง่ายกว่าสำหรับเครื่องมือตรวจสอบแบบฟอร์มของเรา

ฉันต้องการสร้างนิพจน์ทั่วไปที่ตรวจสอบความถูกต้องว่าสตริงมีอักขระ 10 ตัวต่อบรรทัดและสูงสุด 3 บรรทัด

แนวคิดคือการตรวจสอบความถูกต้องของสตริงดังต่อไปนี้:

01234567890
a
b

บรรทัดแรกมี 11 อักขระดังนั้นควรปฏิเสธสตริงทั้งหมด /

a
b
c
d

ข้อความนี้มี 4 บรรทัดดังนั้นจึงควรปฏิเสธด้วย

ฉันได้ลองใช้ regex ต่อไปนี้แล้ว แต่ไม่ได้ผลตามที่คาดไว้:

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

มีเบาะแสเกี่ยวกับสิ่งที่ฉันทำผิดหรือไม่?

คำตอบ

1 WiktorStribiżew Aug 26 2020 at 19:32

คุณสามารถใช้ได้

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

ดูการสาธิต regex

รายละเอียด

  • ^ - จุดเริ่มต้นของสตริง
  • .{0,10} - ศูนย์ถึงสิบตัวอักษรนอกเหนือจากตัวอักษรแบ่งบรรทัด
  • (?:\r?\n.{0,10}){0,2} - ศูนย์หนึ่งหรือสองครั้งของ
    • \r?\n - สิ้นสุดบรรทัด CRLF หรือ LF
    • .{0,10} - ศูนย์ถึงสิบตัวอักษรนอกเหนือจากตัวอักษรแบ่งบรรทัด
  • $ - จุดสิ้นสุดของสตริง

จาวาสคริปต์:

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>