ชีตสรุป Regex

ขั้นตอน 1 / 3 33%

เลือกเอนจิน regex

เริ่มจากเอนจินที่คุณใช้ ข้อมูลอ้างอิงจะซ่อนไวยากรณ์ที่ใช้ไม่ได้กับตัวเลือกนั้น

ใช้ข้อมูลอ้างอิงแบบโต้ตอบนี้เพื่อเปรียบเทียบไวยากรณ์นิพจน์ทั่วไปก่อนวางลงในโค้ด เลือก JavaScript, PCRE2/PHP, Python re, .NET หรือมุมมองทุกเอนจิน แล้วเลือกหัวข้อและค้นหารายการที่แสดงอยู่ ข้อมูลอ้างอิงจะระบุไวยากรณ์เฉพาะกลุ่ม เพราะโทเค็นที่คอมไพล์ได้ในเอนจินหนึ่งอาจถูกปฏิเสธหรือมีความหมายต่างออกไปในอีกเอนจินหนึ่ง การค้นหาและคัดลอกทำในเบราว์เซอร์ และหน้านี้จะไม่รันแพตเทิร์นกับข้อความของคุณ

วิธีใช้ชีตสรุป Regex

  1. 1

    เลือกเอนจิน

    เริ่มจาก JavaScript, PCRE2/PHP, Python re, .NET หรือเปรียบเทียบทั้งหมด มุมมองที่เจาะจงจะตัดรายการที่ใช้กับเอนจินที่เลือกไม่ได้ออก

  2. 2

    เลือกหัวข้อ

    เปิดแองเคอร์ คลาสอักขระ ตัวบอกจำนวน กลุ่ม lookaround รูปร่างแพตเทิร์นทั่วไป หรือแฟล็กและตัวเลือก

  3. 3

    ค้นหาและคัดลอกในเครื่อง

    ค้นหาโทเค็นและคำอธิบายในหน้า แล้วเลือกโทเค็นเพื่อคัดลอก ข้อความค้นหาไม่ถูกส่งไปยังเซิร์ฟเวอร์และไม่ถูกเพิ่มใน URL

  4. 4

    ตรวจสอบใน runtime จริง

    ใช้เอนจิน แฟล็ก และ API ที่ตรงกันในโครงการของคุณเพื่อคอมไพล์และทดสอบนิพจน์สุดท้าย ข้อมูลอ้างอิงนี้อธิบายไวยากรณ์ ไม่ได้ตรวจสอบข้อมูล production

ความเข้ากันได้มีความสำคัญ

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

คุณลักษณะ JavaScript RegExp PCRE2 / PHP Python re .NET
จุดเริ่มต้นสัมบูรณ์ ไม่มี \A \A \A \A
จุดสิ้นสุดสัมบูรณ์ ไม่มี \z \z \Z \z
คุณสมบัติ Unicode \p{L} ใช้โหมด u หรือ v รองรับ ไม่มีใน re ที่มากับระบบ รองรับ
การจับภาพแบบมีชื่อ (?<name>...) (?<name>...) หรือ (?P<name>...) (?P<name>...) (?<name>...)
การอ้างอิงย้อนกลับแบบมีชื่อ \k<name> \k<name> หรือ (?P=name) (?P=name) \k<name>
การจับคู่ทั่วทั้งข้อความ แฟล็ก g พร้อม API จับคู่ API ซ้ำ เช่น preg_match_all API ซ้ำ เช่น finditer API ซ้ำ เช่น Matches

\d และ \w ต้องระวังเป็นพิเศษ ใน JavaScript \d ยังคงเป็นเลข ASCII 0-9 และ \w ยังคงเป็นอักขระคำ ASCII เป็นหลักแม้เพิ่ม u เอนจินอื่นอาจใช้กฎ Unicode ตามโหมดและการตั้งค่า หากพฤติกรรม Unicode สำคัญ ให้เขียนและทดสอบคุณสมบัติหรือคลาสที่ต้องการอย่างชัดเจน

แองเคอร์และขอบเขต

โทเค็น สิ่งที่สื่อ หมายเหตุการย้ายข้ามเอนจิน
^ จุดเริ่มอินพุต หรือจุดเริ่มบรรทัดในโหมดหลายบรรทัด มีในทั้งสี่กลุ่ม
$ จุดสิ้นสุดอินพุต หรือจุดสิ้นสุดบรรทัดในโหมดหลายบรรทัด มีในทั้งสี่กลุ่ม แต่รายละเอียดบรรทัดใหม่ท้ายข้อความต่างกัน
\b ขอบเขตคำ นิยามอักขระคำขึ้นกับเอนจินและโหมด
\A จุดเริ่มต้นสัมบูรณ์ของสตริง PCRE2, Python และ .NET; ไม่ใช่ JavaScript
\z จุดสิ้นสุดสัมบูรณ์ของสตริง PCRE2 และ .NET; Python ใช้ \Z
\Z จุดสิ้นสุดสตริงของ Python PCRE2 และ .NET อาจจับคู่ก่อนบรรทัดใหม่สุดท้าย; ใช้ \z สำหรับจุดสิ้นสุดสัมบูรณ์

กลุ่มและ lookaround

โทเค็น ความหมาย ข้อจำกัดสำคัญ
(abc) กลุ่มจับภาพ มีในทั้งสี่กลุ่ม
(?:abc) กลุ่มไม่จับภาพ มีในทั้งสี่กลุ่ม
(?<name>abc) กลุ่มมีชื่อ ไวยากรณ์ JavaScript, PCRE2 และ .NET
(?P<name>abc) กลุ่มมีชื่อ ไวยากรณ์ Python; PCRE2 ยอมรับด้วย
(?=abc) / (?!abc) lookahead บวก / ลบ มีในทั้งสี่กลุ่ม
(?<=abc) / (?<!abc) lookbehind บวก / ลบ ทั้งสี่กลุ่มรองรับ แต่ความยาวที่อนุญาตต่างกัน

Lookbehind เป็นกับดักด้านการย้ายข้ามเอนจินที่พบบ่อย Python re ต้องใช้ lookbehind ที่มีความกว้างคงที่ ส่วนการรองรับ JavaScript ขึ้นกับ runtime ที่คุณนำไปใช้งาน ทดสอบแพตเทิร์นจริงใน runtime ที่เก่าที่สุดที่รองรับ แทนการพึ่งเพียงแถวในชีตสรุป

รูปร่างแพตเทิร์น ไม่ใช่ตัวตรวจสอบที่สมบูรณ์

รายการแพตเทิร์นทั่วไปอธิบายเพียงรูปร่างโดยตั้งใจ ตัวอย่างเช่น ^\d{4}-\d{2}-\d{2}$ ยอมรับ 2026-99-99 และแพตเทิร์นที่มีรูปร่างอีเมลอย่างง่ายไม่อาจใช้มาตรฐานอีเมลครบถ้วนได้ หลังตรวจสอบรูปแบบเบื้องต้น ให้แยกวิเคราะห์วันที่ URL และตัวระบุที่มีโครงสร้างด้วยไลบรารีที่ถูกต้อง

รูปร่าง แพตเทิร์นตัวอย่าง สิ่งที่พิสูจน์ไม่ได้
ทศนิยมมีเครื่องหมาย ^-?\d+(?:\.\d+)?$ เครื่องหมายทศนิยมตามโลแคล การจัดกลุ่ม ช่วงตัวเลข หรือความเที่ยงตรง
ข้อความรูปร่างอีเมล ^[\w.+-]+@[\w-]+\.[\w.-]+$ ที่อยู่อีเมลที่ส่งถึงได้หรือครบตามมาตรฐาน
ข้อความรูปร่าง URL HTTP(S) ^https?://\S+$ URL ที่ปลอดภัย แยกวิเคราะห์ได้ หรือเข้าถึงได้
รูปร่างวันที่ ISO ^\d{4}-\d{2}-\d{2}$ วันที่จริงในปฏิทิน
อักขระ slug ASCII ^[A-Za-z0-9_-]+$ กฎตัวพิมพ์ ตัวคั่น หรือคำสงวนของแอปพลิเคชันคุณ

แฟล็กและตัวเลือก

อย่าคัดลอกแฟล็กโดยไม่ตรวจสอบ API ของโฮสต์ JavaScript เขียน /pattern/g ขณะที่ Python ส่ง re.I หรือ re.X, .NET ใช้ RegexOptions ได้ และ PCRE2/PHP มักใช้ตัวคั่นและตัวปรับท้ายแพตเทิร์น g เป็นแฟล็กการจับคู่ทั่วทั้งข้อความของ JavaScript ไม่ใช่ตัวปรับ PCRE2 โดยทั่วไปการจับคู่ PCRE2 ซ้ำควบคุมผ่าน PHP API โหมดขยาย x ใช้ได้ใน PCRE2, Python และ .NET แต่ไม่ใช่แฟล็ก JavaScript

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

ไม่ นี่คือข้อมูลอ้างอิงไวยากรณ์ที่มีการค้นหาและคัดลอกในเบราว์เซอร์ ใช้ตัวทดสอบ regex และ runtime ของแอปพลิเคชันเพื่อคอมไพล์แพตเทิร์นและทดสอบอินพุตตัวแทน

โทเค็นที่คุ้นเคยบางอย่างย้ายข้ามเอนจินไม่ได้ Python re ที่มากับระบบใช้ (?P<name>…) สำหรับกลุ่มมีชื่อ ส่วน JavaScript ใช้ (?<name>…) และ JavaScript ไม่รองรับแองเคอร์สัมบูรณ์ \A หรือ \z

ไม่ ใน JavaScript \d คือเลข ASCII และ \w เป็นอักขระคำ ASCII เป็นหลักแม้ใช้แฟล็ก u เอนจินอื่นมีโหมดและตัวเลือก Unicode ต่างกัน จึงควรทดสอบพฤติกรรมที่ข้อมูลของคุณต้องการ

ให้ใช้เป็นเพียงการตรวจรูปร่างอย่างเร็วเท่านั้น ตัวอย่างไม่พิสูจน์ว่าอีเมลส่งถึงได้ URL ปลอดภัยหรือเข้าถึงได้ หรือวันที่มีอยู่จริงในปฏิทิน สำหรับกฎ production ให้ใช้ parser หรือตัวตรวจสอบเฉพาะทาง

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

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

เครื่องมือเลือกสี HEX

เลือกหรือป้อนสี HEX แล้วดูค่า RGB, HSL, CMYK โดยประมาณ ค่าความสว่างสัมพัทธ์ และคอนทราสต์กับสีขาวและสีดำ

เลขฐานสองเป็นฐานสิบ

แปลงเลขฐานสองเป็นฐานสิบ หรือเลขฐานสิบเป็นฐานสองได้ทันที วางตัวเลขหนึ่งตัวแล้วอ่านผลลัพธ์

เครื่องกำเนิดจานสี

สร้างพาเลตสีแบบเอกรงค์ ใกล้เคียง คู่ตรงข้าม ไตรแอดิก หรือเตตราดิกจากสี HEX หลัก พร้อมส่งออกตัวแปร CSS ที่คัดลอกได้ทันที