ข้ามไปยังเนื้อหา
Toova
เครื่องมือทั้งหมด

Regex101 vs Regex Tester Online — เปรียบเทียบตรงไปตรงมา

Toova

Regex101 เป็น regex tester ที่นักพัฒนาส่วนใหญ่เอื้อมหาโดยค่าเริ่มต้น มันเร็ว, ฟีเจอร์มาก, รองรับหก regex flavor และมีแผงคำอธิบายละเอียดที่สอนคุณว่าแต่ละส่วนของแพตเทิร์นทำอะไร สำหรับการใช้งานส่วนใหญ่มันได้รับชื่อเสียงเป็นมาตรฐานทอง

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

การเปรียบเทียบนี้ครอบคลุม Regex101, Toova Regex Tester, RegExr, RegexPal, iHateRegex และ Debuggex — สิ่งที่แต่ละตัวทำได้ดี, ที่ขาด และวิธีเลือกตาม workflow จริงของคุณ สำหรับการทดสอบทันที, Toova Regex Tester ทำงานในเบราว์เซอร์ทั้งหมด สำหรับการเปรียบเทียบบล็อกข้อความหลังใช้การแทน, text diff แสดงเป๊ะว่าอะไรเปลี่ยน สำหรับการตรวจสอบ format output ของสตริงที่ regex ประมวลผล, markdown preview render ผลเชิงภาพ

Regex101 — มาตรฐานทอง

Regex101 สร้างโดย Firas Dib และเผยแพร่ในปี 2012 มันกลายเป็นมาตรฐาน de facto สำหรับการพัฒนา regex online และมีเหตุผลที่ดี ชุดฟีเจอร์หาคู่ยากในเครื่องมือฟรี:

  • หก regex flavor: PCRE, PCRE2, ECMAScript (JavaScript), Python, Golang และ Java คุณเลือก flavor ในดรอปดาวน์มุมบนซ้าย
  • คำอธิบายเรียลไทม์: ขณะพิมพ์ regex, แผงละเอียดทางขวาอธิบายทุก token — quantifier, character class, anchor, capture group — เป็นภาษาธรรมดาพร้อมตำแหน่งเป๊ะที่ไฮไลต์ในแพตเทิร์น
  • การแยก match: แต่ละ match ถูก color-code และคลิกได้ Capture group แสดงแยก พร้อมเลขกลุ่มและป้าย named group
  • โหมดการแทน: เขียนสตริงแทนและเห็นผลการแทนแบบสด พร้อมการรองรับ backreference
  • โหมด unit test: นิยาม match ที่คาดและไม่ match แล้วตรวจสอบกับ regex มีประโยชน์เมื่อแพตเทิร์นต้องตอบสนองหลายข้อกำหนดพร้อมกัน
  • Library และ permalink: บันทึก regex ของคุณเป็น URL ถาวรและแบ่งปัน Library ยังมีแพตเทิร์นชุมชนหลายพันพร้อมคำอธิบาย
  • Debugger: เดินผ่านวิธีที่ engine ประมวลผลสตริงทดสอบตัวอักษรต่อตัวอักษร รวมการ backtrack มีค่าสำหรับการวินิจฉัย catastrophic backtracking

ข้อจำกัดของ Regex101

อินเทอร์เฟซหนาแน่น ผู้ใช้ครั้งแรกพบ layout สามแผงพร้อมดรอปดาวน์, checkbox แฟล็ก, แผงข้อมูล match และ sidebar คำอธิบายพร้อมกัน สำหรับการใช้งานง่ายๆ นี่เกินจำเป็นและเสียงเชิงภาพชะลอคุณ

Regex101 ประมวลผลสตริงทดสอบของคุณบนเซิร์ฟเวอร์ ฟีเจอร์ library บันทึกแพตเทิร์นสาธารณะโดยค่าเริ่มต้น — regex ใดที่คุณ paste และแบ่งปันมองเห็นได้โดยใครก็ตามที่มี URL นี่มักโอเคสำหรับแพตเทิร์นที่ไม่ละเอียดอ่อน แต่ระวังเมื่อสตริงทดสอบของคุณมีข้อมูลผู้ใช้จริง, ตัวระบุระบบภายใน หรือ format ที่เป็นกรรมสิทธิ์

Flavor ค่าเริ่มต้นคือ PCRE ไม่ใช่ JavaScript นักพัฒนาที่ทดสอบ JS regex ต้องจำสลับ — และหากลืม อาจดีบักแพตเทิร์นที่ทำงานใน PCRE แต่ล้มเหลวใน production JavaScript (หรือกลับกัน) Named capture group เป็นกับดักที่พบบ่อยที่สุด: PCRE ใช้ (?P<name>...) ในขณะที่ ECMAScript ใช้ (?<name>...)

Toova Regex Tester — เน้นความเป็นส่วนตัว, JS-Native

Toova Regex Tester ใช้แนวทางต่าง: ฝั่ง client เท่านั้น, JavaScript engine, ไม่มี round-trip เซิร์ฟเวอร์ Regex และสตริงทดสอบของคุณถูกประมวลผลในเบราว์เซอร์โดยใช้ engine เดียวกับ Node.js และเบราว์เซอร์สมัยใหม่ สิ่งที่คุณเห็นคือเป๊ะสิ่งที่โค้ด production JavaScript ของคุณจะทำ — ไม่ต้องการการแปล flavor

  • ความเป็นส่วนตัว: ไม่มีสิ่งใดออกจากเบราว์เซอร์ของคุณ เหมาะสำหรับการทดสอบกับสตริงที่ละเอียดอ่อน
  • ความเท่า JavaScript: ใช้ regex engine เนทีฟ JavaScript ขจัดความสับสน PCRE-vs-ECMAScript
  • แฟล็ก: รองรับทุกแฟล็ก JS มาตรฐาน — global, case-insensitive, multiline, dotAll, unicode, sticky
  • การไฮไลต์ match: Match และ capture group ไฮไลต์ inline ในสตริงทดสอบ
  • 16 ภาษา: อินเทอร์เฟซ localize สำหรับทีมระหว่างประเทศ

การแลกเปลี่ยน: Toova ไม่รองรับ flavor PCRE, Python หรือ Go — เป็น JavaScript เท่านั้น ไม่มี step debugger, ไม่มีโหมด unit test และไม่มี library ชุมชน สำหรับการพัฒนา JS ล้วน การละไว้เหล่านี้ไม่ค่อยเป็นปัญหา สำหรับงาน regex ข้ามภาษาหรือการดีบักลึกของ catastrophic backtracking, Regex101 ยังเป็นเครื่องมือดีกว่า

RegExr — ตัวเลือกของผู้สอน

RegExr สร้างเฉพาะสำหรับการเรียนรู้ Library ชุมชนของมันมีแพตเทิร์นหลายร้อยตัวพร้อมคำอธิบายที่เขียนโดยมนุษย์ — ไม่เพียงสิ่งที่แพตเทิร์นทำ แต่ทำไมมันถูกจัดโครงสร้างแบบนั้นและ edge case ใดที่ต้องระวัง สิ่งนี้ทำให้เป็นทรัพยากรยอดเยี่ยมเมื่อคุณไม่เพียงทดสอบแพตเทิร์นแต่พยายามเข้าใจ construct ใหม่

แผงคำอธิบายแสดงการแยก token ต่อ token คล้าย Regex101 แต่ออกแบบเชิงภาพสะอาดกว่าที่ผู้เริ่มต้น parse ง่ายขึ้น อินเทอร์เฟซโดยรวมหนาแน่นน้อยกว่า

RegExr รองรับ flavor JavaScript และ PCRE ประมวลผลข้อมูลฝั่ง client สำหรับการ matching แต่แพตเทิร์น library เก็บฝั่งเซิร์ฟเวอร์ ไม่ครบฟีเจอร์เท่า Regex101 (ไม่มี step debugger, ไม่มี unit test, flavor น้อยกว่า) แต่สำหรับงาน regex JavaScript ประจำวันและการเรียนรู้ภาษา เป็นทางเลือกที่แข็งแกร่ง

RegexPal — น้อยและเร็ว

RegexPal เป็น regex tester JavaScript ที่ตัดออก ไม่มีบัญชี, ไม่มีการประมวลผลเซิร์ฟเวอร์, ไม่มี library, ไม่มีแผงคำอธิบาย คุณ paste regex, paste สตริงทดสอบ และ match ถูกไฮไลต์ทันที ไม่มีอื่น

ความน้อยนี้เป็นจุดแข็ง: หน้าโหลดในไม่ถึงวินาที, มีความยุ่งยากศูนย์ในการได้ผล และโฟกัส JavaScript เท่านั้นหมายถึงไม่มีความสับสน flavor เป็นเครื่องมือที่คุณใช้เมื่อต้องการคำตอบรวดเร็วและไม่อยากคิดเกี่ยวกับตัวเลือกอินเทอร์เฟซ

จุดอ่อน: ไม่มีคำอธิบาย, ไม่มีโหมดการแทน, ไม่มีการแสดง named group, ไม่มีการดีบัก หาก regex ไม่ทำงาน RegexPal ไม่บอกอะไรเกี่ยวกับสาเหตุ

iHateRegex — สำหรับการค้นพบแพตเทิร์น

iHateRegex ใช้แนวทางที่ต่างสิ้นเชิง: เป็น library คัดสรรของแพตเทิร์น regex พร้อม production สำหรับงานทั่วไป การตรวจสอบอีเมล, การ match URL, เบอร์โทร, ที่อยู่ IP, format บัตรเครดิต, สีฐาน 16, วันที่ — แต่ละแพตเทิร์นมาพร้อมคำอธิบายสิ่งที่ครอบคลุมและสิ่งที่ยกเว้นโดยตั้งใจ

ไม่ใช่เครื่องมือทดสอบหลัก คุณไปที่ iHateRegex เมื่อต้องการแพตเทิร์นรู้ดีสำหรับปัญหาทั่วไปแทนเมื่อสร้างแพตเทิร์น custom จากศูนย์ แพตเทิร์นถูกตรวจสอบโดยชุมชนและ edge case บันทึก ซึ่งมักมีค่ามากกว่าการสร้างเอง

มี tester พื้นฐานบนแต่ละหน้าแพตเทิร์นที่ให้คุณตรวจสอบแพตเทิร์นกับสตริง sample ของคุณก่อนคัดลอก การรันทดสอบฝั่ง client

Debuggex — ตัวอธิบายเชิงภาพ

Debuggex render regex ของคุณเป็น railroad diagram — flowchart ที่แสดงเส้นทางที่เป็นไปได้ผ่านแพตเทิร์น แต่ละทางเลือก (a|b), กลุ่มตัวเลือก ((...)?) และ quantifier (+, *, {n,m}) กลายเป็นสาขาเชิงภาพหรือลูปใน diagram

การแทนเชิงภาพนี้ทำให้แพตเทิร์นบางตัวชัดเจนทันทีที่อ่านยากในรูปแบบข้อความเชิงเส้น แพตเทิร์นอย่าง (a|ab)*c — โด่งดังในการทำให้เกิด catastrophic backtracking — แสดงโครงสร้างการแตกสาขาเชิงทวีคูณใน diagram ในวิธีที่การแทนเชิงเส้นไม่ได้

Debuggex ไม่ใช่เครื่องมือความเร็ว การสร้างและ iterate บนแพตเทิร์นช้ากว่าในเครื่องมือที่อิงข้อความ แต่สำหรับการเข้าใจว่าทำไมแพตเทิร์นทำงานแบบไม่คาดคิด หรือสำหรับการอธิบาย regex ซับซ้อนให้เพื่อนร่วมงานที่ไม่รู้ไวยากรณ์ output เชิงภาพมีประโยชน์จริง รองรับ JavaScript, PCRE และ Python

อ้างอิง Flavor — ความแตกต่างหลัก

สิ่งที่สำคัญที่สุดที่ต้องเข้าใจเกี่ยวกับ regex flavor คือแพตเทิร์นที่ทำงานในตัวหนึ่งอาจล้มเหลวเงียบหรือทำงานต่างในอีกตัว เหล่านี้คือกรณีกับดักที่พบบ่อยที่สุด:

Named capture group

PCRE ใช้ (?P<name>...) ECMAScript (JavaScript) ใช้ (?<name>...) Python ยอมรับทั้งคู่ Go ใช้ (?P<name>...) เหมือน PCRE

(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})

รูปแบบ PCRE ด้านบนจะทำให้เกิด SyntaxError ใน JavaScript รูปแบบ ECMAScript ที่ถูก:

(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})

หากคุณคัดลอกแพตเทิร์นจาก tutorial PHP เข้าโค้ด JavaScript, named group จะพัง ตรวจสอบ flavor เสมอ

Lookbehind assertion

PCRE รองรับ lookbehind ความยาวแปรผันมาหลายทศวรรษ JavaScript (ECMAScript 2018) เพิ่มการรองรับ lookbehind แต่เฉพาะใน engine สมัยใหม่ — Node.js 10+, Chrome 62+ JavaScript runtime เก่าปฏิเสธแพตเทิร์น lookbehind ใดด้วย SyntaxError

(?<=\$)\d+(\.\d{2})?

แพตเทิร์นนี้ทำงานเหมือนกันใน PCRE และ JavaScript สมัยใหม่ แต่จะล้มเหลวในสภาพแวดล้อมที่เป้าหมาย ES5 ทดสอบกับ flavor ที่ถูกสำหรับ runtime เป้าหมายของคุณ

Atomic group และ possessive quantifier

PCRE รองรับ atomic group ((?>...)) และ possessive quantifier (++, *+, ?+) ซึ่งป้องกัน backtracking และขจัดกรณี catastrophic backtracking บางตัว ECMAScript ไม่รองรับทั้งคู่ หากเห็นพวกนี้ในแพตเทิร์น มันเป็น PCRE-specific และต้องเขียนใหม่สำหรับ JavaScript

การเปรียบเทียบฟีเจอร์

เครื่องมือ ความเป็นส่วนตัว JS flavor PCRE คำอธิบาย การแทน Debugger Library
Toova ฝั่ง client ใช่ ไม่ พื้นฐาน ใช่ ไม่ ไม่
Regex101 เซิร์ฟเวอร์ ใช่ ใช่ ละเอียด ใช่ ใช่ ใช่
RegExr ฝั่ง client ใช่ ใช่ ดี ไม่ ไม่ ชุมชน
RegexPal ฝั่ง client ใช่ ไม่ ไม่มี ไม่ ไม่ ไม่
iHateRegex ฝั่ง client ใช่ ไม่ เอกสารแพตเทิร์น ไม่ ไม่ คัดสรร
Debuggex เซิร์ฟเวอร์ ใช่ ใช่ Diagram เชิงภาพ ไม่ ไม่ ไม่

ปัญหา Regex อีเมล — กรณีศึกษา

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

^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$

แพตเทิร์นนี้เป็น "ตัวตรวจสอบอีเมลง่าย" ที่พบบ่อยที่สุด มันครอบคลุมที่อยู่อีเมลโลกจริงส่วนใหญ่แต่ปฏิเสธตัวที่ถูกต้องทางเทคนิคเช่น user+tag@example.co.uk (จริงๆ จะผ่าน — + รวม), "user name"@example.com (local part ที่ใส่เครื่องหมายคำพูด — ไม่ผ่าน) และที่อยู่ที่มี domain ที่ไม่ใช่ ASCII

จุดสำคัญไม่ใช่เครื่องมือไหนใช้สำหรับแพตเทิร์นนี้ — ทุกตัวจัดการได้ จุดสำคัญคือการเข้าใจสิ่งที่แพตเทิร์นยอมรับและปฏิเสธต้องการแผงคำอธิบาย (Regex101, RegExr) หรือเอกสารคัดสรร (iHateRegex) เครื่องมือที่แสดงเพียง match ที่ไฮไลต์โดยไม่มีบริบท — RegexPal, มุมมอง Toova พื้นฐาน — บอกคุณว่าแพตเทิร์น match แต่ไม่บอกว่ามัน match สิ่งที่ถูก

อ้างอิงของ MDN บน regular expression JavaScript คือแหล่งที่มาที่เป็นทางการสำหรับไวยากรณ์ regex ECMAScript และครอบคลุมความแตกต่างระหว่าง JS และ PCRE อย่างละเอียด

การพิจารณาความเป็นส่วนตัว

ผลกระทบด้านความเป็นส่วนตัวของ regex tester มักถูกมองข้าม สตริงทดสอบของคุณไม่ใช่เพียง sample สุ่ม — มันบ่อยๆ คือ:

  • บรรทัด log จริงจาก production ที่มี hostname ภายใน, user ID หรือพารามิเตอร์ request
  • ค่าที่ผู้ใช้ส่งที่คุณพยายามตรวจสอบ — อาจเป็นที่อยู่อีเมล, เบอร์โทร หรือ identifier
  • Format ข้อมูลภายในที่เผยสถาปัตยกรรมระบบของคุณ
  • แพตเทิร์นที่เป็นกรรมสิทธิ์ที่คุณไม่อยากให้ index หรือเชื่อมโยงสาธารณะกับ domain ของคุณ

เครื่องมือฝั่งเซิร์ฟเวอร์ (Regex101, Debuggex) ส่งข้อมูลนี้ไปยังเซิร์ฟเวอร์ระยะไกล ฟีเจอร์ library ของ Regex101 ยังอาจทำให้แพตเทิร์นและสตริงทดสอบของคุณค้นพบได้โดยไม่ตั้งใจหากแบ่งปัน permalink โดยไม่รู้ว่าเป็นสาธารณะโดยค่าเริ่มต้น

เครื่องมือฝั่ง client (Toova, RegExr สำหรับการ matching, RegexPal, iHateRegex) เก็บการประมวลผลทั้งหมดในเครื่อง สำหรับงานพัฒนาที่ใช้ sample data, การประมวลผลฝั่งเซิร์ฟเวอร์โอเคปกติ สำหรับการดีบัก production กับข้อมูลจริง, ใช้เครื่องมือฝั่ง client

เมื่อใดควรใช้เครื่องมือไหน

ใช้ Regex101 เมื่อ:

  • ต้องการรองรับ regex PCRE, Python, Go หรือ Java เคียงข้าง JavaScript
  • กำลังดีบักแพตเทิร์นซับซ้อนและต้องการ step debugger เพื่อตามรอย backtracking
  • ต้องการนิยาม unit test สำหรับ regex เพื่อตรวจสอบหลายกรณีพร้อมกัน
  • ต้องการแบ่งปันแพตเทิร์นกับเพื่อนร่วมงานด้วย URL ถาวรและคำอธิบาย
  • สตริงทดสอบของคุณไม่มีข้อมูลที่ละเอียดอ่อน

ใช้ Toova Regex Tester เมื่อ:

  • สภาพแวดล้อมเป้าหมายเป็น JavaScript (เบราว์เซอร์หรือ Node.js) และต้องการความเท่าเป๊ะ
  • สตริงทดสอบของคุณมีข้อมูลที่ละเอียดอ่อน, ส่วนตัว หรือเป็นกรรมสิทธิ์
  • ต้องการอินเทอร์เฟซรวดเร็ว ไม่มีสิ่งรบกวนสำหรับ iteration โดยไม่ต้องสลับโหมด
  • คุณทำงานในทีมหลายภาษาและต้องการอินเทอร์เฟซ localize

ใช้ RegExr เมื่อ:

  • กำลังเรียน regex และต้องการคำอธิบายชัดเจนเคียงข้างการ matching
  • ต้องการ browse library ชุมชนของแพตเทิร์นที่ตรวจสอบแล้วสำหรับปัญหาทั่วไป
  • ต้องการความเป็นส่วนตัวฝั่ง client พร้อมแผงคำอธิบายดีกว่า RegexPal

ใช้ iHateRegex เมื่อ:

  • ต้องการแพตเทิร์นรู้ดีสำหรับงานทั่วไป — อีเมล, URL, เบอร์โทร, IP — แทนการสร้างจากศูนย์
  • ต้องการ edge case และข้อยกเว้นที่บันทึกสำหรับแพตเทิร์นก่อนใช้ใน production

ใช้ Debuggex เมื่อ:

  • ต้องเข้าใจทำไมแพตเทิร์นซับซ้อนทำงานแบบไม่คาดคิด — โดยเฉพาะกับ alternation และ backtracking
  • กำลังอธิบาย regex ให้คนที่ไม่รู้ไวยากรณ์
  • กำลังบันทึกแพตเทิร์นและต้องการรวม railroad diagram เชิงภาพ

ใช้ RegexPal เมื่อ:

  • ต้องการผลที่เร็วที่สุดเท่าที่จะเป็นไปได้โดยมี overhead อินเทอร์เฟซศูนย์
  • กำลังทดสอบแพตเทิร์นง่ายและไม่ต้องการคำอธิบายหรือการแทน

บทสรุป

Regex101 ได้รับชื่อเสียง สำหรับการรองรับหลาย flavor, การดีบักลึกและแพตเทิร์นชุมชน ไม่มีอะไรเทียบได้ในเครื่องมือฟรี แต่สำหรับการพัฒนา JavaScript ทุกวัน, การเก็บสตริงที่ละเอียดอ่อนออกจากเซิร์ฟเวอร์ภายนอก และหลีกเลี่ยงกับดักค่าเริ่มต้น PCRE, เครื่องมือ JavaScript-native ฝั่ง client คือจุดเริ่มต้นที่ถูก

คำแนะนำเชิงปฏิบัติสำหรับนักพัฒนา JavaScript ส่วนใหญ่: bookmark Toova Regex Tester สำหรับงานประจำและการทดสอบที่ละเอียดอ่อนต่อความเป็นส่วนตัว และเปิด Regex101 เมื่อต้องการ step debugger หรือการรองรับหลาย flavor พวกมันเสริมกันแทนแข่งกัน

สำหรับแพตเทิร์น regex ที่แปลงข้อความ, เครื่องมือ text diff ช่วยคุณตรวจสอบว่าการแทนเปลี่ยนเป๊ะสิ่งที่ตั้งใจและไม่มีอื่น และสำหรับการทดสอบว่า output ที่ regex ประมวลผลของคุณ render ถูกต้องเมื่อรวม markdown หรือ HTML, markdown preview ให้การเช็คเชิงภาพทันที