นิพจน์ทั่วไปเพื่อ จำกัด จำนวนอักขระไม่เกิน 10 ตัว


189

ฉันพยายามเขียนนิพจน์ทั่วไปที่จะอนุญาตให้ใช้ตัวอักษรพิมพ์เล็กและไม่เกิน 10 อักขระเท่านั้น สิ่งที่ฉันมีจนถึงตอนนี้ดูเหมือนว่า:

pattern: /^[a-z]{0,10}+$/ 

สิ่งนี้ไม่ทำงานหรือคอมไพล์ ฉันมีตัวทำงานที่เพิ่งอนุญาตตัวอักษรตัวเล็กซึ่งนี่คือ:

pattern: /^[a-z]+$/ 

แต่ฉันต้อง จำกัด จำนวนตัวอักษรไว้ที่ 10


4
{} และ + ทำสิ่งเดียวกัน (นับ) ดังนั้นพวกเขาจึงซ้ำซ้อนจึงเกิดข้อผิดพลาด
PhiLho

1
คุณควรวาง '+' จาก / ^ [az] {0,10} + $ / ควรเป็น / ^ [az] {0,10} $ /
ผู้ใช้ SO

1
โปรดทราบว่ารูปแบบการ^[a-z]{0,10}+$รวบรวมในบางภาษาและบางคนที่โดดเด่นคือ Java, Perl (5.10+), PHP, Ruby (1.9+) ดูหน้านี้สำหรับรายละเอียดเพิ่มเติม
Jerry

ดูวิธีแก้ปัญหาสากลผ่าน lookahead: การจำกัดความยาวของอักขระในนิพจน์ทั่วไป
Vadzim

คำตอบ:


356

คุณสามารถใช้เครื่องมือจัดฟันหยิกเพื่อควบคุมจำนวนเหตุการณ์ที่เกิดขึ้น ตัวอย่างเช่นนี่หมายถึง 0 ถึง 10:

/^[a-z]{0,10}$/

ตัวเลือกคือ:

  • {3} เหตุการณ์ 3 รายการ;
  • {6,} เกิดขึ้นอย่างน้อย 6 ครั้ง;
  • {2,5} 2 ถึง 5 ครั้ง

ดูอ้างอิงแสดงออกปกติ

การแสดงออกของคุณมี + หลังจากวงเล็บปีกกาปิดปิดดังนั้นข้อผิดพลาด


ในเครื่องมือ dev ของ Chrome ที่มีถ่านฉันต้องเริ่มต้น^คุณสมบัติตรงกับคำขอเท่านั้นที่มีชื่อเช่น1234หรือ5678และฉันต้องใส่เครื่องหมาย $
Devin G Rhode

11

/^[a-z]{0,10}$/ควรทำงาน. /^[a-z]{1,10}$/ถ้าคุณต้องการเพื่อให้ตรงกับตัวอักษรอย่างน้อยหนึ่งเช่น/^[a-z]+$/ไม่


9

มันอาจเป็นประโยชน์ในการเพิ่มการจับคู่โลภที่ส่วนท้ายของสตริงดังนั้นคุณสามารถยอมรับสตริง> มากกว่า 10 และ regex จะกลับไปที่ 10 ตัวอักษรแรกเท่านั้น /^[a-z0-9]{0,10}$?/


8

มันขึ้นอยู่กับโปรแกรมที่คุณใช้เป็นอย่างมาก โปรแกรมที่แตกต่างกัน ( Emacs , vi , sedและPerl ) ใช้นิพจน์ทั่วไปที่ต่างกันเล็กน้อย ในกรณีนี้ฉันจะบอกว่าในรูปแบบแรกควรลบ "+" สุดท้าย


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.