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>