ข้ามไปยังเนื้อหา

เครื่องมือทดสอบและตรวจสอบ Regex ออนไลน์ฟรี - ทดสอบรูปแบบทันที

ทดสอบและตรวจสอบนิพจน์ปกติออนไลน์ด้วยการไฮไลท์แบบเรียลไทม์ เครื่องมือทดสอบรูปแบบ regex ฟรีพร้อมการตรวจสอบไวยากรณ์ ผลการจับคู่ และฟังก์ชันการบันทึก ทดสอบ regex เดี๋ยวนี้!

เครื่องมือทดสอบ Regex Pattern

ผลลัพธ์การจับคู่

ป้อนรูปแบบและข้อความทดสอบเพื่อดูผลลัพธ์

บันทึกรูปแบบ

รูปแบบที่บันทึกไว้

ยังไม่มีรูปแบบที่บันทึกไว้

คู่มือสัญลักษณ์ Regex

.ตรงกับอักขระใดๆ ยกเว้นบรรทัดใหม่
\dตรงกับตัวเลขใดๆ (0-9)
\Dตรงกับอักขระที่ไม่ใช่ตัวเลข
\wตรงกับอักขระคำใดๆ (a-z, A-Z, 0-9, _)
\Wตรงกับอักขระที่ไม่ใช่คำ
\sตรงกับอักขระช่องว่างใดๆ
\Sตรงกับอักขระที่ไม่ใช่ช่องว่าง
^ตรงกับจุดเริ่มต้นของบรรทัด
$ตรงกับจุดสิ้นสุดของบรรทัด
*ตรงกับ 0 หรือมากกว่าของอักขระก่อนหน้า
+ตรงกับ 1 หรือมากกว่าของอักขระก่อนหน้า
?ตรงกับ 0 หรือ 1 ของอักขระก่อนหน้า
{n}ตรงกับอักขระก่อนหน้าจำนวน n ตัวอย่างแน่นอน
{n,}ตรงกับอักขระก่อนหน้าอย่างน้อย n ตัว
{n,m}ตรงกับอักขระก่อนหน้าระหว่าง n และ m ตัว
[abc]ตรงกับอักขระใดๆ หนึ่งตัวในวงเล็บ
[^abc]ตรงกับอักขระที่ไม่อยู่ในวงเล็บ
(abc)จัดกลุ่มโทเค็นหลายตัวและจับคู่
a|bตรงกับ a หรือ b
\bตรงกับตำแหน่งขอบเขตคำ
เครื่องคำนวณโหลด...
📚

เอกสารประกอบการใช้งาน

ตัวทดสอบ regex คืออะไร

ตัวทดสอบ regex เป็นเครื่องมือที่ตรวจสอบนิพจน์ทั่วไปกับข้อความส่วนหนึ่งและแสดงสิ่งที่ตรงกัน นิพจน์ทั่วไปหรือ regex คือลำดับอักขระสั้น ๆ ที่ใช้บรรยายรูปแบบของข้อความ เช่น "ตัวเลขสามหลักเรียงกัน" หรือ "คำใด ๆ ที่ขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่" เครื่องมือตรวจสอบ regex นี้ให้ผู้ใช้ป้อนรูปแบบและข้อความทดสอบ แล้วดูส่วนที่ตรงกันซึ่งถูกเน้นได้ทันทีโดยไม่ต้องเขียนโค้ด

นิพจน์ทั่วไปใช้ในภาษาโปรแกรมจำนวนมากเพื่อค้นหาข้อความ ตรวจสอบว่าข้อมูลที่ผู้ใช้ป้อนอยู่ในรูปแบบที่ถูกต้อง และดึงส่วนที่ต้องการออกจากข้อความก้อนใหญ่ ไวยากรณ์มีรูปแบบกระชับแต่เขียนผิดได้ง่าย การทดสอบรูปแบบก่อนนำไปใช้ในโปรแกรมจึงช่วยตรวจพบข้อผิดพลาดได้ตั้งแต่เนิ่น ๆ

วิธีทดสอบนิพจน์ทั่วไปออนไลน์

  1. พิมพ์รูปแบบ ป้อน regex ในช่องรูปแบบ เครื่องมือจะตรวจสอบไวยากรณ์ขณะที่ผู้ใช้พิมพ์ และแสดงข้อความผิดพลาดหากรูปแบบไม่ถูกต้อง เช่น เมื่อวงเล็บเหลี่ยมหรือวงเล็บกลมยังเปิดค้างอยู่
  2. เลือกแฟล็ก แฟล็กจะเปลี่ยนวิธีนำรูปแบบไปใช้ (ดูด้านล่าง)
  3. ป้อนข้อความทดสอบ พิมพ์หรือวางข้อความที่ต้องการค้นหาในกล่องข้อความทดสอบ
  4. อ่านผลลัพธ์ ส่วนที่ตรงกันจะถูกเน้นในข้อความ และเครื่องมือจะแจ้งจำนวนส่วนที่ตรงกัน หากมีข้อความทดสอบ เครื่องมือยังระบุด้วยว่ารูปแบบตรงกับข้อความทั้งหมดตั้งแต่ต้นจนจบ หรือตรงเพียงบางส่วน
  5. บันทึกรูปแบบ สามารถจัดเก็บรูปแบบพร้อมป้ายกำกับสั้น ๆ เพื่อนำกลับมาใช้ภายหลังได้ รูปแบบที่บันทึกไว้จะเก็บอยู่ในเบราว์เซอร์ ไม่ได้เก็บไว้บนเซิร์ฟเวอร์ จึงปรากฏเฉพาะในอุปกรณ์และเบราว์เซอร์เดิม
  6. คัดลอกผลลัพธ์ สามารถคัดลอกข้อความที่ตรงกันหรือตัวรูปแบบไปยังคลิปบอร์ดได้ด้วยการคลิกครั้งเดียว

แฟล็กของ regex

แฟล็กคือตัวอักษรเดี่ยวที่เติมหลังรูปแบบเพื่อเปลี่ยนพฤติกรรมของรูปแบบ เครื่องมือนี้รองรับแฟล็กสี่แบบ ทั้งแบบใช้เดี่ยวและใช้ร่วมกัน:

แฟล็กชื่อผลลัพธ์
gทั่วทั้งข้อความค้นหาส่วนที่ตรงกันทุกแห่งในข้อความ แทนที่จะหยุดที่ส่วนแรก
iไม่สนตัวพิมพ์เล็กใหญ่ไม่สนใจความแตกต่างระหว่างตัวพิมพ์ใหญ่กับตัวพิมพ์เล็ก
mหลายบรรทัดทำให้ ^ และ $ ตรงกับต้นและท้ายของแต่ละบรรทัด ไม่ใช่เฉพาะต้นและท้ายของข้อความทั้งหมด การตั้งค่านี้เปลี่ยนตำแหน่งที่พบส่วนที่ตรงกัน แต่ไม่เปลี่ยนการตรวจสอบข้อความทั้งหมดที่อธิบายไว้ด้านล่าง
sจุดตรงกับทุกอักขระทำให้ . ตรงกับอักขระขึ้นบรรทัดใหม่ได้ด้วย

รวมแฟล็กได้ เช่น gi สำหรับค้นหาทั่วข้อความโดยไม่แยกพิมพ์เล็กใหญ่ หรือ gms สำหรับค้นหาทั่วข้อความ หลายบรรทัด และให้จุดตรงกับทุกอักขระ

วิธีที่เครื่องมือค้นหาส่วนที่ตรงกัน

ตัวจับคู่จะค้นหาทุกรายการที่รูปแบบปรากฏในข้อความเสมอ จึงทำให้การนับส่วนที่ตรงกันทำงานเสมือนเปิดแฟล็ก global แม้ไม่ได้เลือกแฟล็กนี้ในรายการแบบดรอปดาวน์ แต่ละส่วนที่ตรงกันจะถูกบันทึกพร้อมตำแหน่งและความยาว จากนั้นข้อความต้นฉบับจะถูกแยกเป็นส่วนที่ตรงกันและไม่ตรงกัน เพื่อเน้นส่วนที่ตรงกัน

ในการตรวจสอบว่ารูปแบบตรงกับข้อความ ทั้งหมด หรือไม่ เครื่องมือจะห่อรูปแบบไว้ในกลุ่มที่ไม่จับข้อความและใส่จุดยึดเป็น ^(?:pattern)$ การจัดกลุ่มมีความสำคัญเพราะ | (การเลือกทางใดทางหนึ่ง) มีลำดับการผูกที่หลวมกว่าจุดยึด หากไม่มีกลุ่ม รูปแบบอย่าง cat|dog ที่ใส่จุดยึดเป็น ^cat|dog$ จะมีความหมายจริงว่า "ขึ้นต้นด้วย cat หรือ ลงท้ายด้วย dog" ซึ่งไม่เหมือนกับ "ข้อความทั้งหมดคือ cat หรือ dog"

การตรวจสอบนี้จะตัดแฟล็กหลายบรรทัดออกด้วย เมื่อกำหนด m แล้ว ^ และ $ จะตรงกับจุดขึ้นบรรทัดใหม่ทุกแห่ง ดังนั้นการทดสอบที่ใส่จุดยึดจะตอบว่า "มีบรรทัดใดบรรทัดหนึ่งตรงกันหรือไม่" แทนที่จะตอบว่า "ข้อความทั้งหมดตรงกันหรือไม่" เครื่องมือจะนำ m ออกสำหรับการตรวจสอบนี้ และคง i กับ s ไว้ เพราะแฟล็กสองตัวนี้เปลี่ยนสิ่งที่รูปแบบตรงกัน ไม่ใช่ตำแหน่งของจุดยึด ดังนั้นคำตอบจึงอ้างถึงข้อความทั้งหมดเสมอ รวมถึงอักขระขึ้นบรรทัดใหม่

ตัวอย่างพร้อมวิธีทำ

รูปแบบ: \d+ (ตัวเลขอย่างน้อยหนึ่งหลัก), แฟล็ก: g, ข้อความทดสอบ: Room 12 has 5 chairs

  • พบส่วนที่ตรงกัน: 12 และ 5 ดังนั้นจำนวนส่วนที่ตรงกันคือ 2
  • การตรวจสอบข้อความทั้งหมด: รูปแบบไม่ตรงกับข้อความทั้งหมด เพราะข้อความยังมีตัวอักษรและช่องว่าง

หากเปลี่ยนข้อความทดสอบเป็น 12345 รูปแบบเดิมจะตรงกับสตริงทั้งหมด ดังนั้นการตรวจสอบข้อความทั้งหมดจะแจ้งว่าเป็นจริง

เอกสารอ้างอิงไวยากรณ์ regex

การจับคู่อักขระ

สัญลักษณ์ความหมายตัวอย่างสิ่งที่ตรงกัน
.อักขระใด ๆ ยกเว้นอักขระขึ้นบรรทัดใหม่a.c"abc", "adc", "a1c"
\dตัวเลขใด ๆ ตั้งแต่ 0 ถึง 9\d{3}"123", "456"
\Dอักขระใด ๆ ที่ไม่ใช่ตัวเลข\D+"abc", "xyz"
\wตัวอักษร ตัวเลข หรือขีดล่างใด ๆ\w+"abc123", "test_123"
\Wอักขระใด ๆ ที่ไม่ใช่ตัวอักษร ตัวเลข หรือขีดล่าง\W+"!@#"
\sอักขระช่องว่างใด ๆa\sb"a b"
\Sอักขระใด ๆ ที่ไม่ใช่ช่องว่าง\S+"abc"

จุดยึดตำแหน่ง

สัญลักษณ์ความหมายตัวอย่างสิ่งที่ตรงกัน
^ต้นบรรทัด^abc"abc" ที่ต้นบรรทัด
$ท้ายบรรทัดabc$"abc" ที่ท้ายบรรทัด
\bขอบเขตคำ\bword\b"word" ในฐานะคำเต็ม

ตัวระบุจำนวน

สัญลักษณ์ความหมายตัวอย่างสิ่งที่ตรงกัน
*รายการก่อนหน้าจำนวนศูนย์ครั้งขึ้นไปa*b"b", "ab", "aab"
+รายการก่อนหน้าจำนวนหนึ่งครั้งขึ้นไปa+b"ab", "aab"
?รายการก่อนหน้าจำนวนศูนย์หรือหนึ่งครั้งcolou?r"color", "colour"
{n}รายการก่อนหน้าจำนวน n ครั้งพอดีa{3}"aaa"
{n,}รายการก่อนหน้าจำนวนอย่างน้อย n ครั้งa{2,}"aa", "aaa"
{n,m}รายการก่อนหน้าจำนวนระหว่าง n ถึง m ครั้งa{2,4}"aa", "aaa", "aaaa"

ชุดอักขระและกลุ่ม

สัญลักษณ์ความหมายตัวอย่างสิ่งที่ตรงกัน
[abc]อักขระหนึ่งตัวใด ๆ ที่ระบุไว้ในวงเล็บเหลี่ยม[aeiou]สระเดี่ยวใด ๆ
[^abc]อักขระใด ๆ ที่ไม่ได้ระบุไว้ในวงเล็บเหลี่ยม[^aeiou]อักขระที่ไม่ใช่สระใด ๆ
(abc)จัดกลุ่มอักขระและจับส่วนที่ตรงกัน(abc)+"abc", "abcabc"
\a\b\ตรงกับ a หรือ b\cat\

มีคุณลักษณะอีกสองอย่างที่ควรรู้ การตรวจสอบล่วงหน้า (lookahead) ซึ่งเขียนเป็น a(?=b) จะตรงกับ "a" เฉพาะเมื่อมี "b" อยู่ถัดไป โดยไม่รวม "b" ในส่วนที่ตรงกัน ส่วนการตรวจสอบย้อนหลัง (lookbehind) ซึ่งเขียนเป็น (?<=a)b จะตรงกับ "b" เฉพาะเมื่ออยู่ถัดจาก "a" โดยตรง

ตัวอย่างรูปแบบที่ใช้บ่อย

สามารถวางรูปแบบเหล่านี้ลงในเครื่องมือเพื่อดูการทำงานกับข้อความตัวอย่าง

ตัวเลขเท่านั้น: ^\d+$ จะตรงกับสตริงที่ประกอบด้วยตัวเลขทั้งหมด เช่น "48210" และปฏิเสธสิ่งที่มีตัวอักษรหรือช่องว่าง

ที่อยู่อีเมล (การตรวจสอบเบื้องต้น): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ จะตรงกับที่อยู่ในรูปแบบ name@domain.tld เช่น "user@example.com" นี่เป็นเพียงการตรวจสอบอย่างง่าย ไม่ใช่รูปแบบอีเมลทั้งหมดตามมาตรฐานอินเทอร์เน็ต ดังนั้นที่อยู่อีเมลบางรูปแบบที่ไม่ปกติแต่ถูกต้องจะไม่ผ่านการตรวจสอบ

หมายเลขโทรศัพท์สหรัฐฯ: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ จะตรงกับรูปแบบ เช่น "(123) 456-7890", "123-456-7890" และ "1234567890"

วันที่ในรูปแบบ YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ ตรวจสอบว่าเดือนอยู่ระหว่าง 01 ถึง 12 และวันอยู่ระหว่าง 01 ถึง 31 แต่ไม่ได้ตรวจสอบว่าวันนั้นถูกต้องสำหรับเดือนที่ระบุหรือไม่ จึงยอมรับ "2024-02-30" แม้เดือนกุมภาพันธ์จะไม่มี 30 วัน

คำถามที่พบบ่อย

นิพจน์ทั่วไปคืออะไร นิพจน์ทั่วไปคือลำดับอักขระที่กำหนดรูปแบบการค้นหา ใช้สำหรับค้นหา จับคู่ และแก้ไขข้อความในภาษาโปรแกรมและโปรแกรมแก้ไขข้อความส่วนใหญ่

แฟล็ก global ทำหน้าที่อะไร หากไม่มีแฟล็ก global การค้นหามักหยุดหลังพบส่วนที่ตรงกันครั้งแรก เมื่อมีแฟล็ก global (g) การค้นหาจะดำเนินต่อและรายงานส่วนที่ตรงกันทุกแห่งในข้อความ เครื่องมือนี้จะค้นหาส่วนที่ตรงกันทั้งหมดเมื่อนับจำนวนเสมอ ไม่ว่าเลือกแฟล็กใด

จะจับคู่จุดจริงหรืออักขระพิเศษอื่นได้อย่างไร ใส่แบ็กสแลชไว้ข้างหน้า ตัวอย่างเช่น \. จะตรงกับจุดจริงแทนที่จะหมายถึง "อักขระใด ๆ" ซึ่งเป็นความหมายของ . ที่ไม่ได้ใส่อักขระหลีก

.* กับ .*? ต่างกันอย่างไร .* เป็นแบบละโมบและจับคู่อักขระให้มากที่สุดเท่าที่ทำได้ ส่วน .*? เป็นแบบขี้เกียจและจับคู่อักขระให้น้อยที่สุดเท่าที่ทำได้ โดยยังทำให้ส่วนที่เหลือของรูปแบบตรงกันได้

เหตุใดเครื่องมือจึงบอกว่าข้อความไม่ตรงกันทั้งหมด ทั้งที่ทุกบรรทัดตรงกัน การตรวจสอบข้อความทั้งหมดถือว่าข้อความเป็นสตริงเดียว โดยรวมอักขระขึ้นบรรทัดใหม่ด้วย รูปแบบอย่าง \d+ จะตรงกับแต่ละบรรทัดของ 12 และ 34 แยกกัน แต่สองบรรทัดรวมอักขระขึ้นบรรทัดใหม่ระหว่างกลางไม่ใช่ตัวเลขทั้งหมด ดังนั้นผลการตรวจสอบข้อความทั้งหมดจึงเป็นไม่ หากต้องการจับคู่ข้อความที่ครอบคลุมหลายบรรทัด รูปแบบต้องครอบคลุมอักขระขึ้นบรรทัดใหม่ด้วย เช่น ใช้ [\s\S]+

จะตรวจสอบได้อย่างไรว่าสตริงทั้งหมดตรงกับรูปแบบ ไม่ใช่เพียงบางส่วน เติม ^ ที่ต้นรูปแบบและ $ ที่ท้ายรูปแบบ เช่น ^[0-9]+$ สำหรับสตริงที่มีแต่ตัวเลข

ตัวทดสอบนี้ใช้กฎ regex เดียวกับภาษาโปรแกรมอื่นหรือไม่ เครื่องมือนี้ใช้กลไกนิพจน์ทั่วไปที่ติดตั้งมากับ JavaScript ไวยากรณ์หลักส่วนใหญ่ เช่น คลาสอักขระและตัวระบุจำนวน มีใช้ร่วมกันในหลายภาษา รวมถึง Python, Java และ Perl แต่รายละเอียดบางอย่างแตกต่างกัน ดังนั้นจึงไม่รับประกันว่ารูปแบบที่ทำงานที่นี่จะทำงานเหมือนกันทุกประการในทุกที่

เอกสารอ้างอิง

  1. "Regular expression." Wikipedia, มูลนิธิวิกิมีเดีย https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs "Regular expressions." Mozilla https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.