§

แพตเทิร์น

แฟล็ก
§

สตริงทดสอบ

§

การจับคู่

0 การจับคู่

    ยังไม่มีการจับคู่ — พิมพ์แพตเทิร์นและสตริงทดสอบด้านบน

    §

    โหมดแทนที่

    อ้างอิงด่วน

    คลาสอักขระ

    \d
    ตัวเลขใดก็ได้ เทียบเท่ากับ [0-9]
    \w
    อักขระของคำใดก็ได้ — ตัวอักษร ตัวเลข หรือขีดล่าง
    \s
    ช่องว่างใดก็ได้ — เว้นวรรค แท็บ ขึ้นบรรทัดใหม่ ฯลฯ

    แองเคอร์

    \b
    การยืนยันความกว้างศูนย์ที่ขอบเขตคำ
    ^
    จุดเริ่มต้นของอินพุต (หรือของแต่ละบรรทัดเมื่อตั้งแฟล็ก m)
    $
    จุดสิ้นสุดของอินพุต (หรือของแต่ละบรรทัดเมื่อตั้งแฟล็ก m)

    ตัวระบุปริมาณ

    *
    ศูนย์หรือมากกว่าของโทเค็นก่อนหน้า แบบโลภ
    +
    หนึ่งหรือมากกว่าของโทเค็นก่อนหน้า แบบโลภ
    ?
    ศูนย์หรือหนึ่งของโทเค็นก่อนหน้า — ยังทำให้ตัวระบุปริมาณก่อนหน้าขี้เกียจ
    {n,m}
    ระหว่าง n และ m ครั้งของการทำซ้ำโทเค็นก่อนหน้า

    กลุ่ม

    (...)
    กลุ่มจับ — เปิดเผยเป็น $1, $2, … ในการแทนที่
    (?:...)
    กลุ่มไม่จับ — จัดกลุ่มโดยไม่ใช้สล็อต
    (?...)
    กลุ่มจับมีชื่อ — เปิดเผยเป็น $ ในการแทนที่

    Lookaround

    (?=...)
    Lookahead เชิงบวก — จับคู่เฉพาะเมื่อตามด้วย …
    (?!...)
    Lookahead เชิงลบ — จับคู่เฉพาะเมื่อไม่ตามด้วย …
    (?<=...)
    Lookbehind เชิงบวก — จับคู่เฉพาะเมื่อนำหน้าด้วย …
    (?
    Lookbehind เชิงลบ — จับคู่เฉพาะเมื่อไม่ได้นำหน้าด้วย …

    การหลีก

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

    วิศวกรไทยใช้ Regex หลายชั้น — validate บัตรประชาชน 13 หลักและเบอร์ AIS/DTAC ใน form React, จับ SKU ของ Shopee TH, แยก log NGINX ของ TrueCloud และสกัด PromptPay ID จาก feed payment gateway สระลอย Unicode ไทยต้องใช้ \p{Script=Thai} แทน [ก-๙] เครื่องมือรันในเบราว์เซอร์

    regex ทำงานอย่างไรในเบราว์เซอร์ของคุณ?

    ทุก runtime ของ JavaScript มาพร้อมกับเอนจินนิพจน์ปกติแบบเนทีฟ — new RegExp(pattern, flags) คอมไพล์แพตเทิร์นของคุณ จากนั้นเมธอดเช่น String.prototype.match, String.prototype.replace และ RegExp.prototype.exec จะรันมันกับสตริงอินพุตใดๆ เครื่องมือทดสอบนี้ห่อหุ้มเอนจินนั้นด้วย UI เพื่อให้คุณสามารถแก้ไข รันและตรวจสอบแพตเทิร์นโดยไม่ต้องออกจากเบราว์เซอร์ ไม่มีสิ่งที่คุณพิมพ์ — แพตเทิร์น แฟล็ก สตริงทดสอบ หรือการแทนที่ — ถูกส่งผ่านเครือข่าย

    เครื่องมือทดสอบ regex ทำงานอย่างไร?

    ไปป์ไลน์เป็นเพียงไม่กี่ขั้นตอนสั้นๆ ซึ่งทั้งหมดทำงานฝั่งไคลเอนต์ในทุกการกดแป้นพิมพ์ (โดยมี debouncing 150 มิลลิวินาทีเพื่อให้การพิมพ์ลื่นไหล):

    1. เนื้อหาแพตเทิร์นของคุณจะถูกอ่านจากช่องด้านบน (ไม่มีตัวคั่น / ที่นำหน้าหรือต่อท้าย — มันเป็นเพียงการตกแต่ง) เม็ดแฟล็กที่เลือกจะถูกต่อเข้าด้วยกันเป็นสตริงแฟล็ก เช่น gi หรือ gimsuy
    2. new RegExp(patternBody, flags) คอมไพล์แพตเทิร์น หากเอนจินโยน SyntaxError (เช่น วงเล็บที่ไม่ตรงคู่หรือการหลีกที่ไม่ถูกต้อง) ข้อความจะถูกแสดงเหนือสตริงทดสอบและรายการการจับคู่จะถูกล้าง ข้อผิดพลาดในการคอมไพล์เป็น err.message จริงจาก V8 / SpiderMonkey / JavaScriptCore ดังนั้นจึงตรงกับสิ่งที่คุณจะเห็นใน DevTools
    3. สำหรับรายการการจับคู่ เครื่องมือทดสอบจะนับด้วยแฟล็ก global สังเคราะห์เสมอ — ดังนั้นแม้คุณจะปิด g รายการก็ยังคงแสดงทุกการจับคู่ การป้องกันมาตรฐานสำหรับการจับคู่ความกว้างศูนย์ (if (m.index === rx.lastIndex) rx.lastIndex++) ป้องกันไม่ให้ลูปหมุนวนกับแพตเทิร์นที่จับคู่สตริงว่าง โหมดแทนที่เคารพชุดแฟล็กจริงของคุณ ดังนั้น $& จึงทำงานเหมือนกับ String.prototype.replace
    4. ระหว่างแต่ละการวนซ้ำ เครื่องมือทดสอบจะตรวจสอบ performance.now() - start และยกเลิกเมื่อ 50 มิลลิวินาทีผ่านไป สิ่งนี้ป้องกันการย้อนกลับแบบหายนะกับอินพุตเช่น (a+)+$ ต่อชุด a ที่ยาว — มิฉะนั้นแท็บจะค้าง การป้องกันเป็นแบบ best-effort: แพตเทิร์นการจับคู่เดี่ยวที่เลวร้ายยังสามารถใช้เวลาภายในการเรียก exec เดียว หากเกิดขึ้น ให้รีเฟรชแท็บและเขียนแพตเทิร์นใหม่ด้วยตัวระบุปริมาณที่ไม่โลภหรือสไตล์ครอบครองอะตอม (เช่น [^x]*x)
    5. สตริงทดสอบจะถูกแบ่งเป็นเซกเมนต์ที่ช่วงของการจับคู่แต่ละครั้ง และเซกเมนต์ที่จับคู่จะถูกห่อในองค์ประกอบ <mark class="rx-match rx-cap-N"> โดย N หมุนวนผ่านสีพาเล็ตหกสี เพื่อให้การจับคู่ที่อยู่ติดกันมองเห็นความแตกต่างได้ง่ายในพริบตา กลุ่มที่มีหมายเลขของการจับคู่แต่ละครั้ง (m[1], m[2], …) และกลุ่มที่มีชื่อ (m.groups) จะแสดงเป็นแถวที่มีป้ายชื่อด้านล่าง หากตั้งแฟล็ก d ดัชนี [start, end] ต่อกลุ่มก็จะแสดงด้วย

    ทำไมต้องใช้เครื่องมือทดสอบ regex นี้?

    • ความเป็นส่วนตัว: ทุกแพตเทิร์น สตริงทดสอบ และการแทนที่ทำงานในเบราว์เซอร์ของคุณโดยใช้เอนจิน JavaScript RegExp ในตัว ไม่มีอะไรออกจากแท็บ — สำคัญเมื่ออินพุตเป็นล็อกของลูกค้า แพตเทิร์นข้อมูลรับรองที่รั่วไหล หรือสิ่งอื่นใดที่คุณจะไม่วางลงในสนามเด็กเล่น regex SaaS ที่โฮสต์
    • รสชาติที่ซื่อสัตย์: เครื่องมือทดสอบเปิดเผยเอนจิน regex อย่างแม่นยำที่ Node.js, Chrome, Safari, Firefox และตัวตรวจสอบฟอร์มในเบราว์เซอร์ทุกตัวรัน ไม่มีเลเยอร์การแปลเป็นรสชาติ Perl เพื่อซ่อนความแตกต่างที่ละเอียดอ่อน — สิ่งที่ทำงานที่นี่ทำงานในโค้ดของคุณ
    • การดีบักการจับและกลุ่มมีชื่อ: กลุ่มที่มีหมายเลขแต่ละกลุ่ม ($1, $2, …) และกลุ่มมีชื่อ ($<year>) จะแสดงต่อการจับคู่หนึ่งครั้ง ดังนั้นคุณสามารถสร้าง parser และอ่านสล็อตได้โดยไม่ต้องเดา โหมดแทนที่ให้คุณผสมกลุ่มได้อย่างอิสระ — $2-$1 สลับสองสล็อตแรก, $<name> ใส่สล็อตมีชื่อ และ $& สะท้อนการจับคู่ทั้งหมด
    • ตัวป้องกันการย้อนกลับแบบหายนะ: เพดาน 50 มิลลิวินาทีในการนับยกเลิกแพตเทิร์นที่เลวร้ายเช่น (a+)+$ ก่อนที่จะหยุดแท็บ คุณเห็นข้อผิดพลาดที่อธิบายแทนเบราว์เซอร์ที่ค้าง และหน้าจะฟื้นทันที

    การประยุกต์ใช้งานทั่วไปของเครื่องมือทดสอบ regex คืออะไร?

    นิพจน์ปกติปรากฏในการพัฒนาเว็บ ความปลอดภัย และงานข้อมูล — เครื่องมือทดสอบนี้กำหนดเป้าหมายไปที่กรณีการใช้งานที่พบบ่อยที่สุด:

    • การตรวจสอบฟอร์ม: ทำต้นแบบแพตเทิร์นอีเมล โทรศัพท์ หรือรหัสไปรษณีย์ วางอินพุตตัวอย่างลงในสตริงทดสอบ และยืนยันว่าทุกกรณีบวกตรงกันและทุกกรณีลบไม่ตรงกันก่อนที่คุณจะส่งแพตเทิร์นไปยังโค้ดในการผลิต
    • การขูดล็อก: วางส่วนหนึ่งของเอาต์พุต NGINX แอปพลิเคชัน หรือล็อกการตรวจสอบ เขียนแพตเทิร์นที่มีกลุ่มชื่อสำหรับส่วนที่คุณสนใจ ((?<ip>…) (?<path>…)) และอ่านสล็อตที่จับได้ต่อการจับคู่เพื่อยืนยันว่า parser ของคุณถูกต้อง
    • ค้นหาและแทนที่สำหรับ refactor: ใช้โหมดแทนที่เพื่อเขียนซ้ำตัวระบุในข้อมูลโค้ด — (\w+)\.set(\w+)\($1.$2 = เปลี่ยนการเรียก setter เป็นการกำหนดค่าคุณสมบัติ และตัวอย่างสดแสดงผลลัพธ์ก่อนที่คุณจะนำไปใช้ใน codemod

    ตัวอย่าง regex มีลักษณะอย่างไร?

    ใช้แพตเทิร์น (\d{4})-(\d{2})-(\d{2}) ที่มีแฟล็ก g รันกับสตริงทดสอบ release 2025-11-15, prerelease 2026-05-25 เอนจินพบสองการจับคู่ การจับคู่แรกคือ 2025-11-15 โดยมีกลุ่ม 1 = 2025, กลุ่ม 2 = 11, กลุ่ม 3 = 15 การจับคู่ที่สองคือ 2026-05-25 ที่มีรูปกลุ่มเดียวกัน ในโหมดแทนที่ เทมเพลตการแทนที่ $3/$2/$1 เขียนวันที่ทั้งสองใหม่เป็น 15/11/2025 และ 25/05/2026 — การแปลง ISO เป็น DMY ด้วยแพตเทิร์นเดียวที่คุณสามารถยืนยันด้วยสายตาได้ก่อนเสียบแพตเทิร์นเข้ากับสคริปต์

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