นิพจน์ JavaScript RegEx สำหรับรูปแบบ '0 2 0 2 2' [ปิด]

ฉันกำลังมองหาโซลูชัน regEx ที่ตรงกับรูปแบบของ:

ตัวเลขช่องว่าง ตัวเลขช่องว่าง เช่น 0 2 0 2 2 หรือ 0 10 0 10 4 เป็นต้น

สตริงสามารถมีความยาวได้ไม่สิ้นสุด ดังนั้นนิพจน์ของ regEx จึงต้องตรงกัน แต่ต้องอยู่ในรูปแบบเดียวกัน


person Charabon    schedule 11.05.2013    source แหล่งที่มา
comment
ไม่ค่อยพื้นฐานเท่าที่คุณคิดว่าจะทำถูกต้อง :p ^\d+(?>\s+\d+)*$ ควรทำเคล็ดลับ คุณกำลังบอกว่านี่เป็นพื้นฐานใช่ไหม?   -  person Niet the Dark Absol    schedule 12.05.2013
comment
@Kolink: ใช่แล้ว ซ้ำเพียงบางส่วน คลาสอักขระ และ การจัดกลุ่ม :-)   -  person Bergi    schedule 12.05.2013
comment
ฉันได้ลองใช้วิธีแก้ปัญหาหลายอย่างที่พบในออนไลน์แล้ว แต่ก็ไม่มีโชค ฉันไม่ได้ใช้ regex มาระยะหนึ่งแล้ว แต่ก็ยังพยายามทำความเข้าใจอยู่   -  person Charabon    schedule 12.05.2013
comment
ขออภัย ต้องแก้ไข ต้องการรูปแบบย่อยเพียงครั้งเดียวเท่านั้นในนั้น   -  person Niet the Dark Absol    schedule 12.05.2013
comment
@ user2373636 แทนที่จะให้คำตอบแก่คุณ เป็นการดีที่สุดที่จะแสดงนิพจน์ทั่วไปต่างๆ ที่คุณพยายามใช้ซึ่งไม่ประสบความสำเร็จ ด้วยวิธีนี้ เราจะเห็นว่าปัญหาของคุณอยู่ที่จุดใด และช่วยแก้ไขและขจัดความสับสนใดๆ   -  person Anthony Forloney    schedule 12.05.2013
comment
@Kolink น่าเศร้าที่รสชาติ JS regex มากพอไม่รองรับการยืนยันแบบ lookaround   -  person HamZa    schedule 12.05.2013
comment
@HamZaDzCyberDeV D'oh ฉันคิดว่านี่คือ PHP XD และตอนนี้ฉันไม่สามารถแก้ไขกลับได้ สาปแช่ง.   -  person Niet the Dark Absol    schedule 12.05.2013
comment
@Kolink ฮ่าฮ่าฮ่า ไม่มีปัญหา การลบ ?> น่าจะใช้งานได้ ^\d+(\s+\d+)*$   -  person HamZa    schedule 12.05.2013
comment
@HamZaDzCyberDeV: จริงๆแล้วมันเป็นกลุ่มการจับคู่อิสระ (เพื่อป้องกันการย้อนรอย) ไม่ใช่การมองย้อนกลับบางประเภท (และ js รองรับการมองไปข้างหน้า ยังไงก็ตาม) (?: Kolink เดิมทีมีดีอย่างสมบูรณ์...   -  person Bergi    schedule 12.05.2013
comment
@Bergi อ่าใช่ฉันลืมไปว่า JS ไม่รองรับ lookbehind :p   -  person HamZa    schedule 12.05.2013
comment
@HamZaDzCyberDeV: มันไม่ได้มองข้างหลัง เป็นกลุ่มที่ไม่ย้อนรอย/กลุ่มอะตอมมิก ซึ่งหมายความว่าจะป้องกันการย้อนรอย แม้ว่า JS regex จะไม่รองรับสิ่งนี้   -  person nhahtdh    schedule 12.05.2013
comment
@Allendar เขาไม่ต้องการแยกเขาแค่อยากให้ตรงกับรูปแบบ Number(SpaceNumber)*   -  person HamZa    schedule 12.05.2013


คำตอบ (1)


/^\d+(\s\d+)*$/ จะจับคู่ตัวเลขช่องว่าง หมายเลขช่องว่าง ... หมายเลข (ช่องว่างเดียวเท่านั้น)

/^\d+( \d+)*$/ จะจับคู่กับช่องว่างระหว่างนั้นเท่านั้น

สิ่งเหล่านี้จะไม่ตรงกับช่องว่างต่อท้าย

person user568109    schedule 11.05.2013
comment
คุณลืม ^ และ $ ไม่เช่นนั้นก็จะตรงกับ abc4 88 1 - person HamZa; 12.05.2013
comment
จริงๆ แล้วมันจะตรงกับ 4 88 1 ใน abc4 88 1 นอกจากนี้ฉันไม่รู้ว่า OP ต้องการมันอยู่ตรงกลางสตริงหรือไม่ - person user568109; 12.05.2013