Penguji Regex

Penguji regex kami membolehkan anda menulis dan menguji ungkapan biasa dalam masa nyata dengan penyerlahan padanan segera. Lihat semua padanan, kumpulan tangkapan, dan indeks padanan semasa anda menaip. Menyokong semua bendera regex JavaScript (global, tidak sensitif huruf besar-kecil, berbilang baris, dotAll, unicode, melekit). Termasuk mod gantian untuk ujian cari-dan-ganti, berserta helaian rujukan regex yang komprehensif untuk rujukan pantas.

star 4.9
auto_awesome AI
New

Penguji Regex calculator

/ /
global | case-insensitive | multiline | dotAll | unicode
info Enter a pattern to start matching
0 matches
find_replace Replace Mode

                        

No matches yet

lightbulb Tips

  • \d = digit, \w = word, \s = space
  • Use 'g' flag to find all matches
  • Escape special chars: \. \( \[ \+
  • Use (?:...) for non-capturing groups

How to Use the Penguji Regex

edit

Masukkan Corak

Taip corak regex anda di medan corak. Ralat sintaks diserlahkan dalam masa nyata.

text_fields

Tambah Teks Ujian

Tampal atau taip teks yang ingin anda uji. Padanan akan diserlahkan serta-merta.

tune

Togol Bendera

Dayakan bendera seperti global (g), tidak sensitif huruf besar-kecil (i), atau berbilang baris (m) untuk mengubah suai gelagat padanan.

visibility

Lihat Keputusan

Lihat semua padanan, kumpulan tangkapan, dan kedudukan padanan. Gunakan mod gantian untuk menguji cari dan ganti.

The Formula

Ungkapan biasa ialah pola yang digunakan untuk memadankan gabungan aksara dalam rentetan. Enjin regex mengimbas teks ujian dari kiri ke kanan, mencuba untuk memadankan pola pada setiap kedudukan. Bendera mengubah suai gelagat padanan — 'g' mencari semua padanan, 'i' mengabaikan huruf besar-kecil, 'm' menjadikan ^ dan $ memadankan sempadan baris.

new RegExp(pattern, flags).exec(testString)

lightbulb Variables Explained

  • pattern Pola ungkapan biasa untuk dipadankan
  • flags Bendera regex: g (global), i (tidak sensitif huruf besar-kecil), m (berbilang baris), s (dotAll), u (unicode)
  • testString Teks input untuk menguji pola
  • exec() Mengembalikan butiran padanan termasuk kumpulan dan indeks yang ditangkap

tips_and_updates Pro Tips

1

Gunakan bendera 'g' untuk mencari semua padanan, bukan hanya yang pertama

2

Lepaskan aksara khas dengan garis miring ke belakang: \. \( \) \[ \] \{ \} \+ \* \?

3

Gunakan (?:...) untuk kumpulan bukan tangkapan apabila anda tidak memerlukan nilai padanan

4

\d = digit, \w = aksara perkataan, \s = ruang kosong, \b = sempadan perkataan

5

Gunakan .+? (malas) dan bukannya .+ (tamak) untuk memadankan sesedikit mungkin

6

Bendera 'm' menjadikan ^ dan $ memadankan permulaan/penghujung setiap baris, bukan hanya rentetan

7

Uji kes tepi: rentetan kosong, aksara khas, dan input yang sangat panjang

Penguji regex percuma kami membolehkan anda membina, menguji, dan menyahpepijat ungkapan biasa dengan penyerlahan padanan langsung. Lihat padanan, kumpulan tangkapan, dan keputusan gantian serta-merta semasa anda menaip. Berfungsi dengan sintaks regex JavaScript.

Penguji Regex Dalam Talian dengan Pratonton Langsung

Taip pola regex anda dan lihat padanan diserlahkan dalam masa nyata. Penguji regex kami menyokong semua bendera JavaScript termasuk:

  • global
  • tidak sensitif huruf besar-kecil
  • berbilang baris
  • dotAll

Setiap padanan diserlahkan dengan kumpulan tangkapan dipaparkan secara berasingan untuk memudahkan penyahpepijatan.

Pembangun & Penyahpepijat Pola Regex

Bina pola regex yang kompleks dengan alat interaktif kami. Lihat dengan tepat apa yang dipadankan oleh pola anda dan sebabnya.

Kumpulan tangkapan dinomborkan dan dipaparkan, memudahkan pembinaan pola untuk:

  • pengekstrakan data
  • pengesahan
  • pemprosesan teks

Helaian Rujukan & Panduan Pantas Regex

Rujukan pantas untuk sintaks regex biasa:

  • kelas aksara (\d, \w, \s)
  • pengkuantiti (+, *, ?, {n})
  • sauh (^, $, \b)
  • kumpulan dan pilihan
  • lookahead dan lookbehind

Semua yang anda perlukan untuk membina corak regex betul-betul di sebelah penguji.

Apakah itu Ungkapan Biasa dan Bagaimana Ia Berfungsi?

Ungkapan biasa (regex) ialah urutan aksara yang menentukan corak carian untuk memadankan teks. Enjin regex membaca corak dan mengimbas rentetan input dari kiri ke kanan, cuba memadankan pada setiap kedudukan sehingga berjaya atau menghabiskan rentetan tersebut.

Menurut MDN Web Docs, ungkapan biasa JavaScript ialah objek yang dicipta sama ada dengan literal (/corak/bendera) atau pembina RegExp. Sintaks rasmi dan semantik pemadanan ditentukan dalam spesifikasi bahasa ECMAScript yang diselenggara oleh TC39, manakala teori yang lebih luas berasal daripada bahasa biasa dalam teori bahasa formal.

Kebanyakan enjin moden, termasuk yang terdapat dalam Chrome (V8), Node.js, dan .NET, melaksanakan pemadan pengunduran (backtracking) yang menyokong ciri seperti rujukan ke belakang dan lookaround melangkaui automata terhingga tulen.

Cara Menggunakan Kelas Aksara dan Pengkuantiti dalam Regex

Kelas aksara dan pengkuantiti adalah blok binaan teras bagi mana-mana corak regex. Kelas aksara seperti [a-z] memadankan sebarang aksara tunggal dalam set tersebut, manakala kelas trengkas seperti \d (digit), \w (aksara perkataan), dan \s (ruang putih) ditentukan dalam spesifikasi ECMAScript dan didokumenkan pada MDN Web Docs.

Pengkuantiti mengawal pengulangan:

  • * bermaksud sifar atau lebih
  • + bermaksud satu atau lebih
  • ? bermaksud sifar atau satu
  • {n,m} memadankan antara n dan m kali

Gabungkannya untuk membina corak yang tepat, contohnya \d{3}-\d{4} untuk serpihan telefon. Kelas nafi seperti [^0-9] memadankan apa sahaja kecuali aksara yang disenaraikan, memberikan anda kawalan terperinci ke atas teks yang diterima oleh corak anda.

Apakah itu Sauh, Sempadan, dan Lookaround dalam Regex?

Sauh dan sempadan memadankan kedudukan dan bukannya aksara, membolehkan anda menetapkan di mana padanan mesti berlaku tanpa menggunakan teks. Tanda caret ^ bersauh pada permulaan rentetan (atau baris dengan bendera berbilang baris), $ bersauh pada penghujung, dan \b menandakan sempadan perkataan antara perkataan dan aksara bukan perkataan, seperti yang didokumenkan oleh MDN Web Docs dan spesifikasi ECMAScript.

Penegasan lookaround memperluaskan idea ini: lookahead (?=...) dan lookahead negatif (?!...) menyemak perkara yang mengikutinya, manakala lookbehind (?<=...) dan (?

Penegasan lebar sifar ini adalah penting untuk peraturan kata laluan, pengesahan, dan pemadanan token hanya dalam konteks tertentu.

Cara Menggunakan Kumpulan Tangkapan Bernama dan Rujukan Kebelakang

Kumpulan tangkapan bernama membolehkan anda melabelkan subrentetan yang ditangkap untuk corak yang lebih jelas dan mudah diselenggara. Dimasukkan ke dalam JavaScript dalam ECMAScript 2018 dan didokumenkan pada MDN Web Docs, sintaks (?\d{4}) menetapkan nama 'tahun' kepada satu kumpulan, boleh diakses melalui match.groups.tahun.

Rujukan ke belakang menggunakan semula nilai yang ditangkap sebelum ini kemudian dalam corak yang sama: \1 merujuk kepada kumpulan bernombor pertama dan \k merujuk kepada kumpulan bernama. Sebagai contoh, (?['\"]).*?\k memadankan rentetan bersandarkan tanda petua yang ditutup dengan aksara tanda petua yang sama semasa ia dibuka.

Kumpulan bernama meningkatkan kebolehbacaan berbanding indeks kedudukan, terutamanya dalam corak kompleks untuk menghurai tarikh, URL, atau baris log berstruktur.

Cara Menguji dan Menyahpepijat Regex untuk Pengesahan E-mel dan URL

Regex digunakan secara meluas untuk mengesahkan dan mengekstrak e-mel dan URL, walaupun pematuhan RFC penuh agak sukar. Format e-mel ditentukan dalam RFC 5322, dan tatabahasa alamatnya adalah sangat kompleks sehinggakan tiada regex pendek yang menangkapnya dengan sempurna; MDN Web Docs dan spesifikasi HTML WHATWG mengesyorkan corak pragmatik untuk medan jenis input=email berbanding parser RFC 5322 yang ketat.

URL mengikut sintaks generik dalam RFC 3986. Untuk kebanyakan aplikasi, corak longgar yang menangkap ralat jelas berserta penghantaran sebenar atau pengesahan permintaan adalah lebih kukuh daripada ungkapan yang menyeluruh.

Gunakan penguji ini untuk menyemak corak anda terhadap sampel yang sah dan tidak sah sebelum menghantarnya, bagi mengesan negatif palsu yang boleh menolak input pengguna yang sah.

Adakah Regex Selamat? Memahami ReDoS dan Perangkap Keselamatan

Regex selamat untuk pemadanan tetapi boleh mewujudkan risiko penafian perkhidmatan jika corak ditulis dengan tidak cermat. Penafian Perkhidmatan Ungkapan Biasa (ReDoS), yang didokumenkan oleh OWASP, berlaku apabila enjin pengunduran menghadapi pengunduran malapetaka pada input yang direka bentuk, menyebabkan masa eksponen dan membekukan proses. Pencetus klasik ialah pengkuantiti bersarang atau bertindih pada corak yang samar-samar, seperti (a+)+$ terhadap rentetan 'a' yang panjang diikuti dengan aksara yang tidak sepadan.

OWASP mengesyorkan:

  • mengelakkan pengkuantiti bersarang
  • menggunakan kumpulan atom atau pengkuantiti milik di mana disokong
  • menetapkan masa tamat pelaksanaan
  • tidak pernah membina corak daripada input pengguna yang tidak dipercayai tanpa pengesahan

Apabila menjalankan regex terhadap teks yang dikawal penyerang, utamakan corak pustaka yang diuji dengan baik and uji input kes terburuk dalam alat ini sebelum menerapkannya.

Bagaimanakah Bendera Regex Berbeza Merentas JavaScript, Python, dan PCRE?

Bendera regex berkongsi konsep merentas bahasa tetapi berbeza dari segi sintaks dan ciri yang tersedia. Dalam JavaScript, bendera dilampirkan pada literal (/corak/gi) atau diluluskan sebagai hujah kedua pembina RegExp, dengan g, i, m, s, u, dan y ditentukan dalam spesifikasi ECMAScript dan diterangkan pada MDN Web Docs.

Modul re Python menggunakan bendera sebaris seperti re.IGNORECASE atau awalan (?i) dan tidak mempunyai bendera melekit. PCRE dan enjin serasi Perl yang digunakan oleh PHP dan banyak alat menyokong pengubah suai yang serupa ditambah ciri lanjutan.

Penguji ini menggunakan enjin JavaScript, jadi corak berkelakuan tepat seperti yang akan berlaku dalam pelayar dan Node.js. Apabila memindahkan corak ke bahasa lain, sahkan semula tingkah laku pengkuantiti, pengendalian Unicode, dan sokongan lookbehind, kerana ini berbeza antara pelaksanaan.

Kesilapan Regex Biasa dan Cara Mengelakkannya

Kesilapan regex yang paling biasa melibatkan aksara khas yang tidak dilaraskan, pengkuantiti tamak, dan bendera yang terlupa. Meta-aksara seperti . ( ) [ ] { } + * ? ^ $ | \ membawa makna khas dan mesti dilaraskan dengan garis miring terbalik (backslash) untuk dipadankan secara literal, mengikut spesifikasi ECMAScript dan MDN Web Docs; titik biasa . memadankan sebarang aksara, bukan tanda noktah.

Pengkuantiti tamak seperti .+ terlebih jangkau dan menelan lebih daripada yang diniatkan, jadi gunakan versi malas .+? apabila memadankan antara pembatas. Terlupa bendera g hanya mengembalikan padanan pertama, dan meninggalkan sauh membolehkan corak memadankan subrentetan yang tidak diniatkan.

Perangkap lain termasuk mengabaikan Unicode dengan bendera u dan menganggap lookbehind berfungsi di mana-mana sahaja. Uji kes pinggir seperti rentetan kosong, baris baharu, dan input musuh dalam alat ini sebelum bergantung pada mana-mana corak.

Frequently Asked Questions

sell

Tags