RegEx เพื่อค้นหาตัวอักษรที่ต่อเนื่องกันสองตัวขึ้นไป


98

ฉันต้องการตรวจสอบว่าสตริงมีอักขระอัลฟ่าที่ต่อเนื่องกันสองตัวขึ้นไปหรือไม่ [a-zA-Z]เคียงข้างกันสองคนขึ้นไป ตัวอย่าง:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid

คำตอบ:


206

สิ่งนี้ควรทำเคล็ดลับ:

[a-zA-Z]{2,}

เป็นไปได้{2}โดยไม่มีเครื่องหมายจุลภาคก็ควรใช้งานได้ใช่ไหม
Alexander Mills

17
อเล็กซานเดอร์เพียงเพื่อล้างบางสิ่ง: {2} หมายความว่าความยาวจะต้องเป็น 2 {2,} หมายความว่าความยาวของนิพจน์สามารถ => 2
Shmarkus

1

Personnaly (เป็น nooby) ฉันเคยใช้:

[0-9][0-9]+.

แต่หนึ่งจากไซมอนนั้นดีกว่า! = ง


0

[a-zA-Z] {2,} ใช้ไม่ได้กับอักขระที่เหมือนกันสองตัวขึ้นไป ในการทำเช่นนั้นคุณควรจับอักขระใด ๆ จากนั้นทำการจับภาพซ้ำดังนี้:

(.) \ 1

วงเล็บจะจับไฟล์. ซึ่งแสดงถึงอักขระใด ๆ และ \ 1 เป็นผลลัพธ์ของการจับภาพ - โดยทั่วไปแล้วจะมองหาอักขระนั้นซ้ำติดต่อกัน หากคุณต้องการเจาะจงว่าอักขระใดที่คุณต้องการค้นหาว่าเหมือนกันติดต่อกันเพียงแค่แทนที่ "อักขระใด ๆ " ด้วยคลาสอักขระ ...

([a-zA-Z]) \ 1

ค้นหาอักษรตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ที่ทำซ้ำติดต่อกัน ตรงกับ "abbc123" ไม่ใช่ "abc1223" เพื่อให้มีช่องว่างระหว่างพวกเขา (เช่น ab) จากนั้นรวมช่องว่างทางเลือกใน regex ระหว่างอักขระที่จับและการทำซ้ำ ...

([az] AZ]) \ s? \ 1


ฉันค่อนข้างแน่ใจว่าคุณเข้าใจคำถามผิดเพราะมันเกี่ยวกับตัวอักษรสองตัว นิพจน์ทั่วไปของคุณใช้สำหรับกรณีอื่น: ตัวอักษรที่คล้ายกันสองตัว!
csabinho

-4

ฉันค่อนข้างมั่นใจว่าคุณสามารถใช้ [Az] แทน [a-zA-Z] เพื่อรับอักขระอัลฟาตัวเล็กและตัวพิมพ์ใหญ่ http://www.w3schools.com/jsref/jsref_obj_regexp.asp


22
-1: นี่เป็นอีกหนึ่งตัวอย่างที่ยอดเยี่ยมว่าทำไมคุณไม่ควรใช้ w3schools เพื่อการอ้างอิงหรือการศึกษา [A-z]ตรงกับตัวอักษรมากกว่า โดยเฉพาะยังจับคู่วงเล็บเหลี่ยม, แบ็กสแลช, คาเร็ต, ขีดล่างและแบ็กติก
Tim Pietzcker

อันที่จริงสิ่งที่ @TimPietzcker พูดนั้นถูกต้อง ตัวละครที่เขาพูดถึงนั้นมาระหว่างZและaดังนั้นก็จะรวมอยู่ในรูปแบบดังกล่าว (ผิดพลาด) ฉันแนะนำที่สอง: อย่าใช้ w3schools! มันมีข้อมูลที่ไม่ดีมากมายแบบนี้
Andrew Barber

5
อุ๊ยแรก zing บน Stack มันมีมากกว่าที่ฉันคิด ดังนั้นโดยการรวม Az มันจะจับคู่ทุกอย่างตั้งแต่ [AZ เป็นหลาย ๆ สิ่งที่ฉันไม่ต้องการและ az] ชาร์โค้ดทั้งหมดระหว่างเมืองหลวงและไม่ใช่ตัวพิมพ์ใหญ่? danshort.com/ASCIImap
Kevin

ฉันจะพูดว่า [! - +]? นอกจากนี้ยังมีวิธีเข้าถึง charcode ภายใน regex เช่น [65-90] ซึ่งจะเหมือนกับ [AZ] หรือไม่
Kevin

@ เควิน[65-90]จะจับคู่5- 9(ซึ่งรวมถึง6) และ0!
csabinho
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.