Langkau ke kandungan

Penguji & Pengesah Regex Dalam Talian Percuma - Uji Corak Serta-merta

Uji dan sahkan ekspresi biasa dalam talian dengan penyorotan masa sebenar. Penguji corak regex percuma dengan pengesahan sintaks, keputusan padanan, dan fungsi simpan. Uji regex sekarang!

Penguji Corak Regex

Keputusan Padanan

Masukkan corak dan teks ujian untuk melihat keputusan

Simpan Corak

Corak Tersimpan

Tiada corak tersimpan lagi

Panduan Simbol Regex

.Padanan mana-mana aksara kecuali baris baru
\dPadanan mana-mana digit (0-9)
\DPadanan mana-mana bukan digit
\wPadanan mana-mana aksara perkataan (a-z, A-Z, 0-9, _)
\WPadanan mana-mana bukan aksara perkataan
\sPadanan mana-mana aksara ruang putih
\SPadanan mana-mana bukan aksara ruang putih
^Padanan permulaan baris
$Padanan akhir baris
*Padanan 0 atau lebih aksara sebelumnya
+Padanan 1 atau lebih aksara sebelumnya
?Padanan 0 atau 1 aksara sebelumnya
{n}Padanan tepat n aksara sebelumnya
{n,}Padanan sekurang-kurangnya n aksara sebelumnya
{n,m}Padanan antara n dan m aksara sebelumnya
[abc]Padanan mana-mana satu aksara dalam kurungan
[^abc]Padanan mana-mana aksara yang tidak dalam kurungan
(abc)Mengelompokkan beberapa token bersama dan menangkap padanan
a|bPadanan sama ada a atau b
\bPadanan kedudukan sempadan perkataan
Kalkulator Pemuatan...
📚

Dokumentasi

Apakah penguji regex

Penguji regex ialah alat yang menguji ungkapan nalar pada secebis teks dan menunjukkan padanannya. Ungkapan nalar, atau regex, ialah jujukan aksara pendek yang menerangkan corak dalam teks, seperti "tiga digit berturutan" atau "mana-mana perkataan yang bermula dengan huruf besar". Pengesah regex ini membolehkan pengguna memasukkan corak dan teks ujian, kemudian melihat padanan diserlahkan serta-merta tanpa menulis sebarang kod.

Ungkapan nalar digunakan dalam banyak bahasa pengaturcaraan untuk mencari teks, menyemak bahawa masukan pengguna mengikut format yang betul, dan mengeluarkan bahagian tertentu daripada blok teks yang lebih besar. Sintaksnya padat tetapi mudah tersilap, jadi menguji corak sebelum menggunakannya dalam program membantu mengesan kesilapan lebih awal.

Cara menguji ungkapan nalar dalam talian

  1. Taip corak. Masukkan regex dalam medan corak. Alat ini menyemak sintaks semasa pengguna menaip dan memaparkan mesej ralat jika corak tidak sah, contohnya jika kurungan siku atau kurungan biasa dibiarkan terbuka.
  2. Pilih bendera. Bendera mengubah cara corak digunakan (lihat di bawah).
  3. Masukkan teks ujian. Taip atau tampal teks yang hendak dicari dalam kotak teks ujian.
  4. Baca hasil. Padanan diserlahkan dalam teks dan alat ini melaporkan bilangan padanan yang ditemui. Jika terdapat teks ujian, alat ini turut menyatakan sama ada corak sepadan dengan keseluruhan teks dari awal hingga akhir, atau hanya sebahagian daripadanya.
  5. Simpan corak. Corak boleh disimpan dengan label pendek supaya boleh digunakan semula kemudian. Corak yang disimpan disimpan dalam pelayar, bukan pada pelayan, jadi ia hanya muncul pada peranti dan pelayar yang sama.
  6. Salin hasil. Teks yang dipadankan atau corak itu sendiri boleh disalin ke papan klip dengan satu klik.

Bendera regex

Bendera ialah satu huruf yang ditambahkan selepas corak untuk mengubah kelakuannya. Alat ini menyokong empat bendera, secara berasingan atau digabungkan:

BenderaNamaKesan
gGlobalMencari setiap padanan dalam teks dan bukannya berhenti pada padanan pertama.
iTidak peka huruf besar kecilMengabaikan perbezaan antara huruf besar dengan huruf kecil.
mBerbilang barisMenjadikan ^ dan $ sepadan dengan permulaan dan penghujung setiap baris, bukan hanya permulaan dan penghujung keseluruhan teks. Ia mengubah tempat padanan ditemui, tetapi bukan semakan keseluruhan teks yang diterangkan di bawah.
sTitik sepadan semuaMenjadikan . turut sepadan dengan aksara baris baharu.

Bendera boleh digabungkan, contohnya gi untuk global dan tidak peka huruf besar kecil, atau gms untuk global, berbilang baris dan titik sepadan semua.

Cara alat ini mencari padanan

Pemadan sentiasa mencari setiap kemunculan corak dalam teks. Oleh itu, pengiraan padanan berfungsi seolah-olah bendera global diaktifkan walaupun tidak dipilih dalam senarai juntai bawah. Setiap padanan direkodkan bersama kedudukan dan panjangnya, kemudian teks asal dipecahkan kepada bahagian yang dipadankan dan tidak dipadankan supaya padanan boleh diserlahkan.

Untuk menyemak sama ada corak sepadan dengan keseluruhan teks, alat ini membungkus corak dalam kumpulan tanpa tangkapan dan menambahkan sauh padanya: ^(?:pattern)$. Pengumpulan itu penting kerana | (alternasi) mempunyai keutamaan yang lebih rendah daripada sauh. Tanpa kumpulan itu, corak seperti cat|dog yang ditetapkan sauh sebagai ^cat|dog$ sebenarnya bermaksud "bermula dengan cat, atau berakhir dengan dog", yang tidak sama dengan "keseluruhan teks ialah cat atau dog."

Semakan ini turut menggugurkan bendera berbilang baris. Dengan m ditetapkan, ^ dan $ sepadan pada setiap pemisah baris, jadi ujian bersauh akan menjawab "adakah mana-mana satu baris sepadan?" dan bukannya "adakah keseluruhan teks sepadan?". Alat ini membuang m untuk semakan ini dan mengekalkan i serta s kerana kedua-duanya mengubah perkara yang dipadankan oleh corak, bukan tempat sauh berada. Oleh itu, jawapan sentiasa merujuk kepada keseluruhan teks, termasuk pemisah barisnya.

Contoh pengiraan

Corak: \d+ (satu atau lebih digit), bendera: g, teks ujian: Room 12 has 5 chairs.

  • Padanan ditemui: 12 dan 5, maka bilangan padanan ialah 2.
  • Semakan keseluruhan teks: corak itu tidak sepadan dengan keseluruhan teks kerana teks tersebut turut mengandungi huruf dan ruang.

Jika teks ujian diubah kepada 12345, corak yang sama sepadan dengan keseluruhan rentetan, maka semakan keseluruhan teks melaporkan benar.

Rujukan sintaks regex

Padanan aksara

SimbolMaksudContohPadanan
.Mana-mana aksara kecuali baris baharua.c"abc", "adc", "a1c"
\dMana-mana digit, 0 hingga 9\d{3}"123", "456"
\DMana-mana aksara yang bukan digit\D+"abc", "xyz"
\wMana-mana huruf, digit atau garis bawah\w+"abc123", "test_123"
\WMana-mana aksara yang bukan huruf, digit atau garis bawah\W+"!@#"
\sMana-mana aksara ruang putiha\sb"a b"
\SMana-mana aksara yang bukan ruang putih\S+"abc"

Sauh kedudukan

SimbolMaksudContohPadanan
^Permulaan baris^abc"abc" pada permulaan baris
$Penghujung barisabc$"abc" pada penghujung baris
\bBatas perkataan\bword\b"word" sebagai perkataan lengkap

Pengkuantiti

SimbolMaksudContohPadanan
*Sifar atau lebih daripada item sebelumnyaa*b"b", "ab", "aab"
+Satu atau lebih daripada item sebelumnyaa+b"ab", "aab"
?Sifar atau satu daripada item sebelumnyacolou?r"color", "colour"
{n}Tepat n daripada item sebelumnyaa{3}"aaa"
{n,}Sekurang-kurangnya n daripada item sebelumnyaa{2,}"aa", "aaa"
{n,m}Antara n dengan m daripada item sebelumnyaa{2,4}"aa", "aaa", "aaaa"

Set dan kumpulan aksara

SimbolMaksudContohPadanan
[abc]Mana-mana satu aksara yang disenaraikan dalam kurungan siku[aeiou]mana-mana satu vokal
[^abc]Mana-mana aksara yang tidak disenaraikan dalam kurungan siku[^aeiou]mana-mana aksara bukan vokal
(abc)Mengumpulkan aksara dan menangkap padanan(abc)+"abc", "abcabc"
abMemadankan a atau bcat

Dua lagi ciri juga perlu diketahui. Pandang ke hadapan, ditulis sebagai a(?=b), memadankan "a" hanya apabila ia diikuti oleh "b" tanpa memasukkan "b" dalam padanan. Pandang ke belakang, ditulis sebagai (?<=a)b, memadankan "b" hanya apabila ia datang tepat selepas "a".

Contoh corak biasa

Corak ini boleh ditampal ke dalam alat untuk melihat kelakuannya terhadap teks sampel.

Digit sahaja: ^\d+$ memadankan rentetan yang sepenuhnya terdiri daripada digit, seperti "48210", dan menolak apa-apa yang mengandungi huruf atau ruang.

Alamat e-mel (semakan asas): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ memadankan alamat dalam bentuk name@domain.tld, seperti "user@example.com". Ini ialah semakan mudah, bukan format e-mel penuh yang ditakrifkan oleh piawaian internet, jadi sesetengah alamat luar biasa tetapi sah akan gagal semakan ini.

Nombor telefon AS: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ memadankan format seperti "(123) 456-7890", "123-456-7890" dan "1234567890".

Tarikh dalam format YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ menyemak bahawa bulan adalah antara 01 dengan 12 dan hari adalah antara 01 dengan 31. Ia tidak menyemak sama ada hari itu sah untuk bulan tertentu, jadi ia menerima "2024-02-30" walaupun Februari tidak pernah mempunyai 30 hari.

Soalan lazim

Apakah ungkapan nalar? Ungkapan nalar ialah jujukan aksara yang mentakrifkan corak carian. Ia digunakan untuk mencari, memadankan dan menyunting teks dalam kebanyakan bahasa pengaturcaraan serta penyunting teks.

Apakah fungsi bendera global? Tanpa bendera global, carian biasanya berhenti selepas padanan pertama. Dengan bendera global (g), carian diteruskan dan melaporkan setiap padanan dalam teks. Alat ini sentiasa mencari semua padanan semasa mengiranya, tanpa mengira bendera yang dipilih.

Bagaimanakah saya memadankan titik literal atau aksara khas lain? Letakkan garis miring songsang sebelum aksara itu. Contohnya, \. memadankan titik literal dan bukannya "mana-mana aksara", seperti yang dimaksudkan oleh . tanpa pelolosan.

Apakah perbezaan antara .* dengan .*?? .* bersifat tamak dan memadankan sebanyak mungkin aksara. .*? bersifat malas dan memadankan sesedikit mungkin aksara sambil membolehkan bahagian corak yang selebihnya berjaya.

Mengapakah alat ini menyatakan teks tidak sepadan sepenuhnya apabila setiap baris sepadan? Semakan keseluruhan teks menganggap teks sebagai satu rentetan, termasuk pemisah baris. Corak seperti \d+ memadankan setiap baris 12 dan 34 secara berasingan, tetapi kedua-dua baris serta baris baharu di antaranya bukan semuanya digit, maka jawapan keseluruhan teks ialah tidak. Untuk memadankan teks yang merentasi beberapa baris, corak itu juga perlu meliputi pemisah baris, contohnya dengan [\s\S]+.

Bagaimanakah saya menyemak bahawa keseluruhan rentetan sepadan dengan corak, bukan hanya sebahagian daripadanya? Tambahkan ^ pada permulaan dan $ pada penghujung corak, contohnya ^[0-9]+$ untuk rentetan yang hanya mengandungi digit.

Adakah penguji ini memadankan peraturan regex bahasa pengaturcaraan lain? Alat ini menggunakan enjin ungkapan nalar terbina dalam JavaScript. Kebanyakan sintaks teras, seperti kelas aksara dan pengkuantiti, dikongsi oleh bahasa termasuk Python, Java dan Perl, tetapi terdapat beberapa perbezaan, jadi corak yang berfungsi di sini tidak semestinya berkelakuan sama di semua tempat.

Rujukan

  1. "Regular expression." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.