RevealTheme logo

เครื่องมือทดสอบ Regular Expression

ทดสอบ regular expression ของ JavaScript กับอินพุตใดก็ได้ ดูการจับคู่ กลุ่ม และการแทนที่แบบเรียลไทม์

0 ที่ตรงกัน

วิธีใช้เครื่องมือนี้

  1. 1

    Type your regular expression into the pattern field (no slashes — enter the bare pattern).

  2. 2

    Set the flags in the small field beside it, such as g, i, m, or a combination like gi.

  3. 3

    Paste or type the text you want to search into the large input box below.

  4. 4

    Read the match count and each matched substring with its character index in the results panel; an invalid pattern shows the engine's error message instead.

Regular expression คืออะไรและอ่านอย่างไร?

Regular expression (regex) เป็นภาษาเฉพาะทางขนาดเล็กสำหรับการค้นหารูปแบบในข้อความ ภาษาโปรแกรมสมัยใหม่ทุกภาษามีเอนจิน regex เครื่องมือนี้ใช้ RegExp ดั้งเดิมของ JavaScript ซึ่งเป็นไปตามข้อกำหนด ECMAScript 2018+ และรองรับฟังก์ชันสมัยใหม่ เช่น lookbehind assertion, named capture group, การหลีกคุณสมบัติ Unicode และแฟล็ก dotAll องค์ประกอบพื้นฐาน: อักขระตามตัวอักษรจับคู่กับตัวเอง (regex 'gato' จับคู่กับคำว่า gato); character class จับคู่กับอักขระใดตัวหนึ่งในชุด ('[a-z]' จับคู่กับตัวพิมพ์เล็ก); quantifier ควบคุมการทำซ้ำ (* ศูนย์ครั้งหรือมากกว่า, + หนึ่งครั้งหรือมากกว่า, ? ศูนย์หรือหนึ่งครั้ง, {3,5} ระหว่าง 3 ถึง 5 ครั้ง); anchor จับคู่กับตำแหน่ง (^ จุดเริ่มต้นของสตริง, $ จุดสิ้นสุด, \b ขอบเขตของคำ); group จับ subcoincidence ((gato|perro) จับคู่กับตัวใดตัวหนึ่ง โดยจับว่าตรงกับตัวไหน); การสลับ (alternation) ให้ทางเลือก regex โดดเด่นในการแยกวิเคราะห์ข้อความที่มีโครงสร้างแต่ไม่ใช่ไวยากรณ์ (บันทึก log, อีเมล, หมายเลขโทรศัพท์, แอตทริบิวต์ HTML แบบง่าย) และล้มเหลวกับโครงสร้างที่เป็นแบบเรียกซ้ำอย่างแท้จริง (HTML แบบสมบูรณ์, JSON ที่ซ้อนกัน) สำหรับกรณีเหล่านั้น ให้ใช้ parser เครื่องมือทดสอบนี้ช่วยให้คุณปรับปรุงรูปแบบได้พร้อมผลตอบกลับทันที: เปลี่ยน regex แล้วการจับคู่จะถูกคำนวณใหม่ทุกครั้งที่กดแป้น

กรณีการใช้งานทั่วไป

  • ตรวจสอบรูปแบบข้อมูลที่ผู้ใช้ป้อน (อีเมล, หมายเลขโทรศัพท์, รหัสไปรษณีย์) ก่อนส่งไปยังเซิร์ฟเวอร์ของคุณ

  • ดึงข้อมูลที่มีโครงสร้างจากไฟล์บันทึก (timestamp, IP, รหัสสถานะ, พาธของคำขอ)

  • ค้นหาและแทนที่ในไฟล์หลายร้อยไฟล์โดยใช้การค้นหาด้วย regex ของโปรแกรมแก้ไขของคุณ

  • เขียนกฎการเขียน URL ใหม่สำหรับ Nginx, Apache .htaccess หรือ rewrite ของ Vercel

  • แยกวิเคราะห์รูปแบบคล้าย CSV แบบง่าย ๆ ที่การใช้ตัวแยกวิเคราะห์จริงนั้นเกินความจำเป็น

  • สร้างรูปแบบการตรวจสอบฟอร์มสำหรับแอตทริบิวต์ HTML <input pattern="...">

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

รองรับแฟล็กใดบ้าง?
g (global: ค้นหาการจับคู่ทั้งหมด ไม่ใช่แค่ตัวแรก), i (ไม่แยกตัวพิมพ์ใหญ่-เล็ก), m (multiline: ^ และ $ จับคู่กับการขึ้นบรรทัดใหม่), s (dotAll: . จับคู่กับการขึ้นบรรทัดใหม่), u (unicode: จัดการอักขระแบบหลายไบต์ได้อย่างถูกต้อง), y (sticky: จับคู่เฉพาะที่ lastIndex เท่านั้น) รวมแฟล็กได้โดยเขียนต่อกัน: 'gim' เปิดใช้ global + ไม่แยกตัวพิมพ์ + multiline
ฉันจะจับคู่ข้ามหลายบรรทัดได้อย่างไร?
มีความต้องการสองแบบที่ต่างกัน: 'm' ทำให้ ^ และ $ จับคู่กับการขึ้นบรรทัดใหม่ (ปฏิบัติต่อแต่ละบรรทัดเป็นสตริงแยกกันสำหรับ anchor) ส่วน 's' ทำให้ . จับคู่กับการขึ้นบรรทัดใหม่ (มิฉะนั้น . จะจับคู่กับทุกอย่างยกเว้นการขึ้นบรรทัดใหม่) ใช้ทั้งสองตัวร่วมกันหากคุณต้องการจับคู่รูปแบบที่ครอบคลุมหลายบรรทัด
ความแตกต่างระหว่าง quantifier แบบ greedy และ lazy คืออะไร?
Quantifier แบบ greedy (*, +, {n,m}) จับคู่ให้ได้มากที่สุดเท่าที่จะเป็นไปได้ ส่วนแบบ lazy (*?, +?, {n,m}?) จับคู่ให้ได้น้อยที่สุดเท่าที่จะเป็นไปได้ ตัวอย่างคลาสสิก: regex '<.*>' กับ '<a><b>' จะจับคู่ทั้งหมด '<a><b>' ส่วน '<.*?>' จะจับคู่แค่ '<a>' เท่านั้น
เมื่อใดที่ฉันไม่ควรใช้ regex?
เมื่อโครงสร้างเป็นแบบเรียกซ้ำอย่างแท้จริง (HTML, JSON, วงเล็บที่สมดุลกัน) เมื่อคุณต้องจัดการทุกกรณีขอบเขตอย่างถูกต้อง (การแยกวิเคราะห์วันที่ที่มีโซนเวลา ชื่อที่มีเครื่องหมายอะพอสทรอฟี) เมื่อไวยากรณ์ของอินพุตถูกกำหนดไว้อย่างชัดเจนและมีไลบรารีสำหรับการแยกวิเคราะห์อยู่แล้ว มีคำตอบที่โด่งดังบน Stack Overflow ว่า regex นั้นยอดเยี่ยมสำหรับการค้นหารูปแบบ แต่แย่มากสำหรับการแยกวิเคราะห์ภาษา
Named capture group คืออะไร?
แทนที่จะให้ (\d{4})-(\d{2})-(\d{2}) คืนค่ากลุ่มที่เป็นตัวเลข ให้ใช้ (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) แล้วเข้าถึงการจับคู่ได้ในรูปแบบ match.groups.year ซึ่งดูแลรักษาได้ง่ายกว่ามากในโค้ดจริง
ทำไม regex ของฉันจึงช้ากับอินพุตบางอย่าง?
การย้อนรอยแบบหายนะ (catastrophic backtracking) quantifier ที่ซ้อนกัน เช่น (a+)+ อาจใช้เวลาแบบ exponential กับอินพุตที่จงใจสร้างมาโจมตี หลีกเลี่ยง quantifier ที่ซ้อนกันและการสลับที่ทับซ้อนกัน เอนจินของ JavaScript ไม่มี timeout ดังนั้น regex ที่ไม่ดีจึงอาจทำให้คำขอค้างได้ สำหรับการใช้งานจริง ให้ใช้แพ็กเกจ npm safe-regex เพื่อตรวจจับรูปแบบที่เสี่ยง
เครื่องมือนี้จับคู่ตรงกับเอนจิน regex บนเซิร์ฟเวอร์ของฉันหรือไม่?
ส่วนใหญ่ใช่: regex สายพันธุ์หลัก (PCRE, re ของ Python, regex ของ Ruby, Java) มีความคล้ายคลึงกันแต่มีความแตกต่างเล็กน้อย ไวยากรณ์ของ lookbehind พฤติกรรมของ character class และการจัดการ Unicode แตกต่างกันไป เพื่อให้ได้ผลลัพธ์ตรงกันในการใช้งานจริง ให้ทดสอบในภาษาเป้าหมายด้วย

เครื่องมือที่เกี่ยวข้อง

ตัวถอดรหัส JWT

ถอดรหัส JSON Web Tokens (JWT) ได้ทันที ทำงานในเบราว์เซอร์ของคุณ โทเค็นจะไม่ออกจากอุปกรณ์ของคุณ จึงปลอดภัยที่จะใช้กับซีเคร็ตในโปรดักชัน

เครื่องมือจัดรูปแบบและตรวจสอบ JSON

จัดรูปแบบ ตรวจสอบ และย่อขนาด JSON ออนไลน์ ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ข้อมูลของคุณจะไม่ออกจากอุปกรณ์ของคุณเลย

เครื่องมือจัดรูปแบบ XML

จัดรูปแบบและทำให้เอกสาร XML อ่านง่ายขึ้น มีประโยชน์สำหรับ SOAP, sitemap, feed RSS และไฟล์การกำหนดค่า

ตัวเข้ารหัสและถอดรหัส Base64

เข้ารหัสสตริงเป็น Base64 หรือถอดรหัส Base64 เป็นข้อความ เคารพความเป็นส่วนตัวของคุณ: ทำงานในเบราว์เซอร์ของคุณ

ตัวเข้ารหัสและถอดรหัส URL

แปลงข้อความเป็นการเข้ารหัสที่ปลอดภัยสำหรับ URL (การเข้ารหัสแบบเปอร์เซ็นต์) และกลับกัน มีประโยชน์สำหรับ query string การเปลี่ยนเส้นทาง และโฟลว์ OAuth

เครื่องมือเข้ารหัสและถอดรหัสเอนทิตี HTML

แปลงอักขระพิเศษเป็นเอนทิตี HTML (&amp;, &lt; เป็นต้น) และในทางกลับกัน มีประโยชน์สำหรับการฝังข้อความลงใน HTML อย่างปลอดภัย

สมัครรับข่าวสารอัปเดต

เราไม่ขายอีเมลของคุณ เราไม่ส่งสแปม

© 2026 RevealTheme. All rights reserved.