Cara menggunakan regex di javascript

Ekspresi Reguler, atau singkatnya regex atau regexp, sangat kuat dan luar biasa dalam mencari dan memanipulasi string teks, terutama dalam memproses file teks. Satu baris regex dapat dengan mudah mengganti beberapa lusin baris kode pemrograman

Regex didukung di semua bahasa skrip (seperti Perl, Python, PHP, dan JavaScript); . Memulai dengan regex mungkin tidak mudah karena sintaks culunnya, tetapi ini pasti sepadan dengan investasi waktu Anda

Regex Dengan Contoh

Bagian ini dimaksudkan untuk mereka yang perlu menyegarkan ingatan mereka. Untuk pemula, lanjutkan ke bagian berikutnya untuk mempelajari sintaks, sebelum melihat contoh berikut

Ringkasan Sintaks Regex

  • Karakter. Semua karakter, kecuali yang memiliki arti khusus dalam regex, cocok dengan dirinya sendiri. e. g. , regex x_ cocok dengan substring "x";
  • Karakter Regex Khusus. Karakter ini memiliki arti khusus dalam regex (akan dibahas di bawah). find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 231, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 232, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_________________________________________________10____10_____________________________________________.
  • Urutan Escape (\char)
    • Untuk mencocokkan karakter yang memiliki arti khusus dalam regex, Anda perlu menggunakan awalan escape sequence dengan garis miring terbalik (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238). e. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 460 cocok 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 461;
    • Anda juga perlu menggunakan regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 466 untuk mencocokkan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 467 (back-slash)
    • Regex mengenali urutan pelarian umum seperti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 468 untuk baris baru, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 469 untuk tab, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 200 untuk carriage-return, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201 untuk angka oktal hingga 3 digit, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 202 untuk kode hex dua digit, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 203 untuk Unicode _____4 digit, _______3
  • Urutan Karakter (atau String). String dapat dicocokkan dengan menggabungkan urutan karakter (disebut sub-ekspresi). e. g. , regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_5 cocok dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 206. Pencocokan, secara default, peka terhadap huruf besar-kecil, tetapi dapat diatur ke peka huruf besar-kecil melalui pengubah
  • ATAU Operator (. ). e. g. , regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 207 menerima string 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 208 atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 209
  • Kelas karakter (atau Daftar Braket)
    • [. ]. Terima SALAH SATU karakter dalam tanda kurung siku, mis. g. , input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"0 pertandingan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"1, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"2, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"3, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"4 atau input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"5
    • [. -. ] (Rentang Ekspresi). Terima SALAH SATU karakter dalam jangkauan, mis. g. , input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_6 cocok dengan digit apa pun;
    • [^. ]. BUKAN SATU karakter, e. g. , input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_8 cocok dengan non-digit apa pun
    • Hanya keempat karakter ini yang membutuhkan urutan escape di dalam daftar braket. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9, ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238
  • Indikator Kejadian (atau Operator Pengulangan)
    • +. satu atau lebih (^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_3), e. g. , ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_4 cocok dengan satu atau lebih digit seperti ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$5, ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$6
    • *. nol atau lebih (^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_7), e. g. , ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_8 cocok dengan nol digit atau lebih. Itu menerima semua yang ada di ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_4 ditambah string kosong
    • ?. nol atau satu (opsional), e. g. , x0 cocok dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 463 opsional, x2, atau string kosong
    • {M N}. x3 hingga x4 (keduanya termasuk)
    • {m}. tepat x_3 kali
    • {m,}. x3 atau lebih (x7)
  • Metakarakter. cocok dengan karakter
    • (dot). SETIAP SATU karakter kecuali baris baru. Sama seperti x_8
    • \DD. SATU digit/karakter non-digit APAPUN. Digit adalah input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_6
    • \w, \W. SETIAP SATU kata/karakter non-kata. Untuk ASCII, karakter kata adalah "x"0
    • \s, \S. SETIAP SATU karakter spasi/non-spasi. Untuk ASCII, karakter spasi adalah "x"1
  • Posisi Jangkar. tidak cocok dengan karakter, tetapi posisi seperti awal baris, akhir baris, awal kata, dan akhir kata
    • ^, $. start-of-line dan end-of-line masing-masing. e. g. , "x"_2 cocok dengan string numerik
    • \b. batas kata, i. e. , awal kata atau akhir kata. e. g. , "x"_3 cocok dengan kata "x"4 dalam string input
    • \B. Kebalikan dari \b, i. e. , bukan awal kata atau bukan akhir kata
    • \: start-of-word and end-of-word respectively, similar to "x"5. E.g., 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 matches the word "x"4 in the input string.
    • \A, \Z. input awal dan input akhir masing-masing
  • Referensi Belakang yang Dikurung
    • Gunakan tanda kurung "x"_8 untuk membuat referensi balik
    • Gunakan "x"_9, 90,. (Java, Perl, JavaScript) atau 91, 92,. (Python) untuk mengambil kembali referensi secara berurutan
  • Kemalasan (Menahan Keserakahan untuk Operator Pengulangan). 93, 94, 95, 96, 97

Contoh. Angka [0-9]+ atau \d+

  1. Regex (ekspresi reguler) terdiri dari urutan sub-ekspresi. Dalam contoh ini, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_6 dan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6
  2. The find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++00, yang dikenal sebagai kelas karakter (atau daftar braket), menyertakan daftar karakter. Itu cocok dengan karakter TUNGGAL apa pun dalam daftar. Dalam contoh ini, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"6 cocok dengan karakter TUNGGAL antara 0 dan 9 (i. e. , angka), dengan tanda hubung (^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0) menunjukkan rentang
  3. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6, dikenal sebagai indikator kejadian (atau operator pengulangan), menunjukkan satu atau lebih kejadian (^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$3) dari sub-ekspresi sebelumnya. Dalam hal ini, ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_4 cocok dengan satu digit atau lebih
  4. Regex mungkin cocok dengan sebagian dari input (mis. e. , substring) atau seluruh input. Bahkan, itu bisa cocok dengan nol atau lebih substring input (dengan pengubah global)
  5. Regex ini cocok dengan substring numerik apa pun (dari angka 0 hingga 9) dari input. Sebagai contoh,
    1. Jika inputnya adalah find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_06, itu cocok dengan substring find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++07
    2. Jika inputnya adalah find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_08, tidak ada yang cocok
    3. Jika inputnya adalah find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++09, itu cocok dengan substring find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++10, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++11 dan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++12 (tiga kecocokan)
    Perhatikan bahwa regex ini cocok dengan angka dengan nol di depan, seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++13, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++14 dan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++15, yang mungkin tidak diinginkan
  6. Anda juga dapat menulis find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++16, di mana find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17 dikenal sebagai karakter meta yang cocok dengan digit apa pun (sama seperti input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"6). Ada lebih dari satu cara untuk menulis regex. Perhatikan bahwa banyak bahasa pemrograman (C, Java, JavaScript, Python) menggunakan backslash 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 sebagai awalan untuk escape sequence (mis. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_8 untuk baris baru), dan Anda harus menulis find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++21 sebagai gantinya

Contoh Kode (Python, Java, JavaScript, Perl, PHP)

Contoh Kode dengan Python

Lihat "" untuk cakupan penuh

Python mendukung Regex melalui modul find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++22. Python juga menggunakan backslash (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_8) untuk escape sequence (mis. e. , Anda perlu menulis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_6 untuk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++27 untuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17), tetapi mendukung string mentah dalam bentuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++29, yang mengabaikan interpretasi urutan escape - bagus untuk menulis regex

Contoh Kode di Jawa

Lihat "Regular Expressions (Regex) in Java" untuk cakupan penuh

Java mendukung Regex dalam paket find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++30

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

Keluarannya adalah

find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++Contoh Kode di Perl

Lihat "" untuk cakupan penuh

Perl menggunakan ekspresi reguler secara ekstensif dengan banyak sintaks dan operator bawaan. Di Perl (dan JavaScript), regex dibatasi oleh sepasang garis miring ke depan (default), dalam bentuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++31. Anda dapat menggunakan operator bawaan

  • m/regex/modifier atau /regex/modifier. Pertandingan melawan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_32. x_3 adalah opsional
  • s/regex/penggantian/pengubah. Gantikan substring yang cocok dengan penggantinya

Di Perl, Anda dapat menggunakan string non-interpolasi kutipan tunggal find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++34 untuk menulis regex untuk menonaktifkan interpretasi backslash (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238) oleh Perl

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23Contoh Kode dalam JavaScript

Lihat "" untuk cakupan penuh

Dalam JavaScript (dan Perl), regex dibatasi oleh sepasang garis miring ke depan, dalam bentuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++36. Ada dua set metode, terbitkan melalui objek find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++37 atau objek find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++38

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46Contoh Kode di PHP

[MELAKUKAN]

Contoh. String Numerik Penuh ^[0-9]+$ atau ^\d+$

  1. Leading find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_9 dan trailing 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 dikenal sebagai jangkar posisi, yang masing-masing cocok dengan posisi awal dan akhir garis. Hasilnya, seluruh string input harus dicocokkan sepenuhnya, bukan sebagian dari string input (substring)
  2. Regex ini cocok dengan string numerik yang tidak kosong (terdiri dari angka 0 hingga 9), mis. g. , "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_41" dan "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++42". Tidak cocok dengan "" (string kosong), "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++43", "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++44", "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++45", dll. Namun, itu juga cocok dengan "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++46", "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++47" dan "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++48" dengan nol di depan

Contoh. Literal Bilangan Bulat Positif [1-9][0-9]*. 0 atau [1-9]\d*. 0

  1. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++49 cocok dengan karakter apa pun antara 1 hingga 9; . find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7 adalah indikator kejadian yang mewakili nol atau lebih kejadian. Bersama-sama, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_52 cocok dengan angka apa pun tanpa nol di depan
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_7 mewakili operator ATAU;
  3. Ungkapan ini cocok dengan "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_41" dan "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++56";
  4. Anda dapat mengganti input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"6 dengan metakarakter find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17, tetapi tidak find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++49
  5. Kami tidak menggunakan jangkar posisi find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_9 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 di regex ini. Oleh karena itu, dapat cocok dengan bagian mana pun dari string input. Sebagai contoh,
    1. Jika input string adalah "find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_45", itu cocok dengan substring find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++07
    2. Jika string input adalah find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++08, tidak ada yang cocok
    3. Jika string input adalah find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++67, string tersebut cocok dengan substring find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++07, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++11 dan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++12 (tiga kecocokan)
    4. Jika input string adalah find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++71, string tersebut cocok dengan substring. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++12, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++12 dan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++74 (tiga pertandingan)

Contoh. Literal Bilangan Bulat Penuh ^[+-]?[1-9][0-9]*. 0$ atau ^[+-]?[1-9]\d*. 0$

  1. Regex ini cocok dengan literal Integer (untuk seluruh string dengan jangkar posisi), baik positif, negatif, dan nol
  2. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_75 cocok dengan tanda find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6 atau ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8 adalah indikator kejadian yang menunjukkan 0 atau 1 kejadian, i. e. opsional. Oleh karena itu, x0 cocok dengan tanda find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6 atau ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0 terkemuka opsional
  3. Kami telah membahas tiga indikator kejadian. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6 untuk satu atau lebih, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7 untuk nol atau lebih, dan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8 untuk nol atau satu

Contoh. Pengidentifikasi (atau Nama) [a-zA-Z_][0-9a-zA-Z_]* atau [a-zA-Z_]\w*

  1. Mulailah dengan satu huruf atau garis bawah, diikuti dengan nol atau lebih angka, huruf, dan garis bawah
  2. Anda dapat menggunakan karakter meta find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_85 untuk karakter kata "x"0. Ingatlah bahwa karakter meta find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_17 dapat digunakan untuk digit input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"6

Contoh. Nama File Gambar ^\w+\. (gif. png. jpg. jpeg)$

  1. Jangkar posisi find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 masing-masing cocok dengan awal dan akhir string input. Artinya, regex ini akan cocok dengan seluruh string input, bukan bagian dari string input (substring)
  2. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_91 cocok dengan satu atau lebih karakter kata (sama seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++92)
  3. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 460 cocok dengan titik find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++94 karakter. Kita perlu menggunakan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_0 untuk mewakili find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 karena find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 memiliki arti khusus dalam regex. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_8 dikenal sebagai kode pelarian, yang mengembalikan arti literal asli dari karakter berikut. Demikian pula, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8 (indikator kejadian), find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 (posisi jangkar) memiliki arti khusus dalam regex. Anda perlu menggunakan kode pelarian agar cocok dengan karakter ini
  4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_04 cocok dengan "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2305", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2306", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2307" atau "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308". 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_7 menunjukkan operator "ATAU". Tanda kurung digunakan untuk mengelompokkan pilihan
  5. Pengubah 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2310 setelah regex menentukan pencocokan case-insensitive (berlaku untuk beberapa bahasa seperti Perl dan JavaScript saja). Yaitu, menerima "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_11" dan "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2312"

Contoh. Alamat Email ^\w+([. -]?\w+)*@\w+([. -]?\w+)*(\. \w{2,3})+$

  1. Jangkar posisi find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 masing-masing cocok dengan awal dan akhir string input. Artinya, regex ini akan cocok dengan seluruh string input, bukan bagian dari string input (substring)
  2. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_91 cocok dengan 1 atau lebih karakter kata (sama seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++92)
  3. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_17 cocok dengan karakter opsional find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 atau ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0. Meskipun titik (find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5) memiliki arti khusus dalam regex, dalam kelas karakter (kurung siku) karakter apa pun kecuali find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9, ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234 atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 adalah literal, dan tidak memerlukan urutan escape
  4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_25 cocok dengan 0 atau lebih kemunculan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2326
  5. Sub-ekspresi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_27 digunakan untuk mencocokkan nama pengguna di email, sebelum tanda find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++3. Ini dimulai dengan setidaknya satu karakter kata "x"0, diikuti oleh lebih banyak karakter kata atau find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 atau ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0. Namun, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 atau ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0 harus diikuti dengan karakter kata "x"0. Artinya, string input tidak boleh dimulai dengan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 atau ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0; . Contoh string yang valid adalah "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_41"
  6. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++3 cocok dengan dirinya sendiri. Di regex, semua karakter selain yang memiliki arti khusus cocok dengan dirinya sendiri, mis. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_43 cocok 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2343, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2345 cocok 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2345, dan lain-lain
  7. Sekali lagi, sub-ekspresi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_27 digunakan untuk mencocokkan nama domain email, dengan pola yang sama seperti nama pengguna yang dijelaskan di atas
  8. Sub-ekspresi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2348 cocok dengan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5 diikuti oleh dua atau tiga karakter kata, e. g. , "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_50", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2351", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2352", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2353", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2354"
  9. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_55 menetapkan bahwa sub-ekspresi di atas dapat terjadi satu kali atau lebih, e. g. , "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_50", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2357", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2358" dll

Latihan. Tafsirkan regex ini, yang memberikan representasi lain dari alamat email. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_59

Contoh. Menukar Kata menggunakan Referensi Belakang Bertanda Kurung ^(\S+)\s+(\S+)$ dan $2 $1

  1. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 masing-masing cocok dengan awal dan akhir string input
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_62 (huruf kecil 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2363) cocok dengan spasi putih (kosong, tab 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 469, dan baris baru 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 200 atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 468). Di sisi lain, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_67 (huruf besar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2368) cocok dengan apa pun yang TIDAK cocok dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2362, saya. e. , bukan spasi putih. Di regex, metakarakter huruf besar menunjukkan kebalikan dari huruf kecil, misalnya, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++85 untuk karakter kata dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2371 untuk karakter non-kata;
  3. Regex di atas mencocokkan dua kata (tanpa spasi putih) yang dipisahkan oleh satu atau lebih spasi putih
  4. Tanda kurung 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2374 memiliki dua arti dalam regex
    1. mengelompokkan sub-ekspresi, e. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_75
    2. untuk memberikan apa yang disebut referensi belakang untuk menangkap dan mengekstrak kecocokan
  5. Tanda kurung dalam 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_76, disebut referensi-belakang dalam tanda kurung, digunakan untuk mengekstrak substring yang cocok dari string input. Dalam regex ini, ada dua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2376, cocok dengan dua kata pertama, dipisahkan oleh satu atau lebih spasi putih 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2378. Dua kata yang cocok diekstraksi dari string input dan biasanya disimpan dalam variabel khusus "x"9 dan 90 (atau 91 dan 92 dengan Python), masing-masing
  6. Untuk menukar dua kata, Anda dapat mengakses variabel khusus, dan mencetak "________10______83" (melalui bahasa pemrograman);
Contoh Kode dengan Python

Python menyimpan referensi belakang dalam tanda kurung di 91, 92,. Juga, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_87 menyimpan seluruh pertandingan

Contoh Kode di Jawa

Java menyimpan referensi belakang dalam tanda kurung di "x"9, 90,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Contoh. Alamat HTTP ^http. \/\/\S+(\/\S+)*(\/)?$

  1. Mulailah dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_90. Perhatikan bahwa Anda mungkin perlu menulis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_91 sebagai 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2392 dengan kode pelarian dalam beberapa bahasa (JavaScript, Perl)
  2. Diikuti oleh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_67, satu atau lebih spasi, untuk nama domain
  3. Diikuti oleh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_94, nol atau lebih "/. ", untuk sub-direktori
  4. Diikuti oleh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_95, opsional (0 atau 1) di belakang 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2391, untuk permintaan direktori

Contoh. Pola Regex di AngularJS

Pola regex yang agak rumit berikut digunakan oleh AngularJS dalam sintaks JavaScript

Contoh. Contoh Regex di Perl

Sintaks Ekspresi Reguler (Regex).

Ekspresi Reguler (atau Regex) adalah pola (atau filter) yang menjelaskan sekumpulan string yang cocok dengan pola tersebut. Dengan kata lain, regex menerima sekumpulan string tertentu dan menolak sisanya

Regex terdiri dari urutan karakter, metacharacters (seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2373, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238, ________20___010 __________0____0____________________________. Mereka dibangun dengan menggabungkan banyak sub-ekspresi yang lebih kecil

Mencocokkan Karakter Tunggal

Blok penyusun dasar regex adalah pola yang cocok dengan satu karakter. Sebagian besar karakter, termasuk semua huruf (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_09 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4610) dan angka (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4611), cocok dengan dirinya sendiri. Misalnya, regex x cocok dengan substring "x";

Karakter non-alfanumerik tanpa arti khusus dalam regex juga cocok dengan dirinya sendiri. Misalnya, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++1 cocok dengan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++2;

Karakter Khusus Regex dan Urutan Pelarian

Karakter Khusus Regex

Karakter ini memiliki arti khusus dalam regex (saya akan membahas secara detail di bagian selanjutnya)

  • karakter meta. titik (find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5)
  • daftar tanda kurung. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4623
  • posisi jangkar. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230
  • indikator kejadian. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4629
  • tanda kurung. "x"_8
  • atau. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_7
  • melarikan diri dan metakarakter. garis miring terbalik (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_8)
Urutan Melarikan Diri

Karakter yang tercantum di atas memiliki arti khusus dalam regex. Untuk mencocokkan karakter-karakter ini, kita perlu menambahkannya dengan backslash (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238), dikenal sebagai escape sequence. Misalnya, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_2 cocok dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 463;

Regex juga mengenali escape sequence umum seperti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 468 untuk baris baru, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 469 untuk tab, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 200 untuk carriage-return, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201 untuk angka oktal hingga 3 digit, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 202 untuk kode hex dua digit, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 203 untuk Unicode 4 digit,

Contoh Kode dengan PythonContoh Kode dalam JavaScript

[MELAKUKAN]

Contoh Kode di Jawa

[MELAKUKAN]

Mencocokkan Urutan Karakter (String atau Teks)

Sub-Ekspresi

Regex dibangun dengan menggabungkan banyak sub-ekspresi atau atom yang lebih kecil. Misalnya, regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_47 cocok dengan string "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4647". Pencocokan, secara default, peka terhadap huruf besar-kecil, tetapi dapat diatur ke peka huruf besar-kecil melalui pengubah

ATAU (. ) Operator

Anda dapat memberikan alternatif menggunakan operator "ATAU", dilambangkan dengan bilah vertikal 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4649. Misalnya, regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_50 menerima string "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4651", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4652", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4653" atau "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4654"

Daftar Braket (Kelas Karakter) [. ], [^. ], [. -. ]

Ekspresi tanda kurung adalah daftar karakter yang diapit oleh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4623, juga disebut kelas karakter. Ini cocok dengan karakter APA PUN dalam daftar. Namun, jika karakter pertama dari daftar adalah tanda sisipan (find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9), maka cocok dengan SATU karakter yang TIDAK ada dalam daftar. Misalnya, regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4657 cocok dengan satu digit find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++41, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4659, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4654, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4661, atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4662;

Alih-alih mencantumkan semua karakter, Anda bisa menggunakan ekspresi rentang di dalam tanda kurung. Ekspresi rentang terdiri dari dua karakter yang dipisahkan oleh tanda hubung (^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$0). Itu cocok dengan karakter tunggal apa pun yang mengurutkan antara dua karakter, inklusif. Misalnya, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_70 sama dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4671. Anda dapat menyertakan tanda sisipan (find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_9) di depan rentang untuk membalikkan pencocokan. Misalnya, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_73 setara dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4674

Sebagian besar karakter regex khusus kehilangan artinya di dalam daftar braket, dan dapat digunakan apa adanya;

  • Untuk menyertakan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_4, tempatkan di urutan pertama dalam daftar, atau gunakan escape 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4680
  • Untuk memasukkan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_9, letakkan di mana saja kecuali yang pertama, atau gunakan escape 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4682
  • Untuk menyertakan ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_0 di tempat terakhir, atau gunakan escape 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4684
  • Untuk menyertakan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_8, gunakan escape 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 466
  • Tidak perlu melarikan diri untuk karakter lain seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 231, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 232, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 236, dan lain-lain, di dalam daftar braket
  • Anda juga dapat memasukkan karakter meta (akan dijelaskan di bagian berikutnya), seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++85, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2371, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2373, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2362, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4601 di dalam daftar tanda kurung
Beri Nama Kelas Karakter di Daftar Braket (Hanya Untuk Perl?)

Kelas karakter bernama (POSIX) sudah ditentukan sebelumnya dalam ekspresi tanda kurung. Mereka

  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2001, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2002, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2003. huruf + angka, huruf, angka
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_04. digit heksadesimal
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2005, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2006. huruf besar/kecil
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_07. Kontrol karakter
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_08. karakter yang dapat dicetak, kecuali spasi
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_09. karakter yang dapat dicetak, termasuk spasi
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2010. karakter yang dapat dicetak, tidak termasuk huruf dan angka
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_11. spasi

Misalnya, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_12 berarti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2013. (Perhatikan bahwa tanda kurung siku pada nama kelas ini adalah bagian dari nama simbolik, dan harus disertakan selain tanda kurung siku yang membatasi daftar tanda kurung. )

Metakarakter. , \w, \W, \d, \D, \s, \S

Karakter meta adalah simbol dengan arti khusus di dalam regex

  • Titik metakarakter (find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_5) cocok dengan karakter tunggal apa pun kecuali baris baru 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 468 (sama dengan x8). Misalnya, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_17 cocok dengan 3 karakter apa pun (termasuk huruf, angka, spasi putih, tetapi kecuali baris baru);
  • find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++85 (karakter kata) cocok dengan satu huruf, angka, atau garis bawah (sama seperti "x"0). Pasangan huruf besar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2371 (non-word-character) cocok dengan karakter tunggal apa pun yang tidak cocok dengan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++85 (sama seperti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2026)
  • Di regex, metakarakter huruf besar selalu merupakan kebalikan dari huruf kecil
  • find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17 (digit) cocok dengan satu digit apa pun (sama seperti input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"6). Pasangan huruf besar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2373 (non-digit) cocok dengan karakter tunggal apa pun yang bukan digit (sama seperti input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"8)
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_62 (spasi) cocok dengan spasi tunggal mana pun (sama seperti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2032, kosong, tab, baris baru, carriage-return, dan form-feed). Pasangan huruf besar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4601 (non-spasi) cocok dengan karakter tunggal apa pun yang tidak cocok dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2362 (sama seperti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2035)

Contoh

Urutan Backslash (\) dan Regex Escape

Regex menggunakan backslash (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238) untuk dua tujuan

  1. untuk karakter meta seperti find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17 (digit), 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2373 (non-digit), 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2362 (spasi), 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4601 (non-spasi), find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++85 (kata), 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2371 (non-kata)
  2. untuk keluar dari karakter regex khusus, mis. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 460 untuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++5, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 462 untuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2047 untuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++7, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2049 untuk find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8. Anda juga perlu menulis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_6 untuk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 di regex untuk menghindari ambiguitas
  3. Regex juga mengenali 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 468 untuk baris baru, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 469 untuk tab, dll

Perhatikan bahwa dalam banyak bahasa pemrograman (C, Java, Python), garis miring terbalik (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238) juga digunakan untuk escape sequence dalam string, misalnya. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_56 untuk baris baru, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2057 untuk tab, dan Anda juga perlu menulis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2058 untuk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238. Akibatnya, untuk menulis pola regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46_6 (yang cocok dengan satu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238) dalam bahasa ini, Anda perlu menulis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2062 (dua tingkat pelarian. ). Demikian pula, Anda perlu menulis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2063 untuk regex metacharacter find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++17. Ini rumit dan rawan kesalahan

Indikator Kejadian (Operator Pengulangan). +, *, ?, {m}, {m,n}, {m,}

Sub-ekspresi regex dapat diikuti oleh indikator kejadian (alias operator pengulangan)

  • find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_8. Item sebelumnya bersifat opsional dan paling banyak dicocokkan satu kali (mis. e. , muncul 0 atau 1 kali atau opsional)
  • find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_7. Item sebelumnya akan dicocokkan nol kali atau lebih, mis. e. , ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_7
  • find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_6. Item sebelumnya akan dicocokkan satu kali atau lebih, mis. e. , ^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$_3
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2070. Item sebelumnya dicocokkan tepat m kali
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2071. Item sebelumnya dicocokkan m kali atau lebih, i. e. , x_7
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2073. Item sebelumnya dicocokkan setidaknya m kali, tetapi tidak lebih dari n kali

Sebagai contoh. Regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2074 menerima "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2075", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2076" dan "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2077"

Pengubah

Anda dapat menerapkan pengubah ke regex untuk menyesuaikan perilakunya, seperti global, case-insensitive, multiline, dll. Cara menerapkan pengubah berbeda di antara bahasa

Di Perl, Anda dapat melampirkan pengubah setelah regex, dalam bentuk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2078. Sebagai contoh

Di Jawa, Anda menerapkan pengubah saat mengompilasi regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2079. Sebagai contoh,

Mode pengubah yang umum digunakan adalah

  • Mode Case-Insensitive (atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2310). pencocokan case-insensitive untuk huruf
  • Global (atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_81). cocokkan Semua, bukan pertandingan pertama
  • Mode multi baris (atau x3). mempengaruhi find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_9, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2085 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2086. Dalam mode multiline, find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9 cocok dengan start-of-line atau start-of-input;
  • Mode baris tunggal (atau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_63). Dot (find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_5) akan cocok dengan semua karakter, termasuk baris baru
  • Mode komentar (atau x). izinkan dan abaikan komentar tersemat yang dimulai dengan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2094 hingga end-of-line (EOL)
  • lagi

Keserakahan, Kemalasan, dan Mundur untuk Operator Pengulangan

Keserakahan Operator Pengulangan *, +, ?, {m,n}. Operator pengulangan adalah operator serakah, dan secara default menangkap karakter sebanyak mungkin untuk pertandingan. Misalnya, regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_74 mencoba mencocokkan dengan "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2077", lalu "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2076", lalu "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2075"

Lazy Quantifier *?, +?, ??, {m,n}?, {m,}?,. Anda dapat menambahkan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++8 setelah operator pengulangan untuk mengekang keserakahannya (mis. e. , berhenti di pertandingan terpendek). Sebagai contoh,

input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"

Mundur. Jika regex mencapai keadaan di mana kecocokan tidak dapat diselesaikan, regex akan mundur dengan melepaskan satu karakter dari kecocokan rakus. Misalnya, jika regex input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"00 cocok dengan string "input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"01", input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"02 pertama cocok dengan "input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"01";

Kuantor Posesif *+, ++, ?+, {m,n}+, {m,}+. Anda dapat menambahkan find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++6 ke operator pengulangan untuk menonaktifkan backtracking, bahkan dapat mengakibatkan kegagalan pertandingan. e. g, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_08 tidak akan cocok dengan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"09. Fitur ini mungkin tidak didukung dalam beberapa bahasa

Position Anchors ^, $, \b, \B, \, \A, \Z

Jangkar posisi TIDAK cocok dengan karakter sebenarnya, tetapi cocok dengan posisi dalam string, seperti awal baris, akhir baris, awal kata, dan akhir kata

  • ^ dan $. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9 cocok dengan start-of-line. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_0 cocok dengan end-of-line tidak termasuk baris baru, atau end-of-input (untuk input tidak diakhiri dengan baris baru). Ini adalah jangkar posisi yang paling umum digunakan. Sebagai contoh,
  • \B dan b. The "x"_5 cocok dengan batas kata (i. e. , awal kata atau akhir kata); . Sebagai contoh,
  • input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_15 dan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"16. input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"15 dan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"16 masing-masing cocok dengan awal kata dan akhir kata (dibandingkan dengan "x"5, yang dapat cocok dengan awal dan akhir kata)
  • \A dan \Z. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_85 cocok dengan awal input. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20_86 cocok dengan akhir input
    Mereka berbeda dari find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++9 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 dalam hal pencocokan input dengan beberapa baris. find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++_9 cocok di awal string dan setelah setiap jeda baris, sedangkan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2085 hanya cocok di awal string. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_0 cocok di akhir string dan sebelum setiap jeda baris, sedangkan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2086 hanya cocok di akhir string. Sebagai contoh,

Menangkap Kecocokan melalui Referensi-Kembali yang Dikurung & Variabel yang Cocok $1, $2,

Tanda kurung "x"8 melayani dua tujuan dalam regex

  1. Pertama, tanda kurung "x"_8 dapat digunakan untuk mengelompokkan sub-ekspresi untuk mengesampingkan prioritas atau menerapkan operator pengulangan. Misalnya,input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"30 (menerima find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++43, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"32, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"33,. ) berbeda dari input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"34 (menerima find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++43, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"36, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"37,. )
  2. Kedua, tanda kurung digunakan untuk menyediakan apa yang disebut referensi balik (atau grup penangkap). Referensi belakang berisi substring yang cocok. Sebagai contoh, regex 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_76 membuat satu referensi belakang 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2376, yang berisi kata pertama (non-spasi berturut-turut) dari string input; . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23_76 dan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2376 lainnya, berisi dua kata pertama, dipisahkan oleh satu atau lebih spasi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2378

Referensi belakang ini (atau grup penangkap) disimpan dalam variabel khusus "x"9, 90, … (atau 91, 92,. dengan Python), di mana "x"_9berisi substring yang cocok dengan pasangan tanda kurung pertama, dan seterusnya. Misalnya, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_40 membuat dua referensi belakang yang cocok dengan dua kata pertama. Kata-kata yang cocok disimpan di "x"9 dan 90 (atau 91 dan 92), masing-masing

Referensi balik penting untuk memanipulasi string. Referensi balik dapat digunakan dalam string substitusi serta polanya. Sebagai contoh,

(Lanjutan) Lihat ke depan/Lihat ke belakang, Pengelompokan dan Bersyarat

Fitur ini mungkin tidak didukung dalam beberapa bahasa

Pandangan ke depan positif (?=pola)

input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_54 dikenal sebagai lookahead positif. Itu melakukan pertandingan, tetapi tidak menangkap pertandingan, hanya mengembalikan hasilnya. cocok atau tidak cocok. Ini juga disebut penegasan karena tidak menggunakan karakter apa pun dalam pencocokan. Misalnya, regex kompleks berikut digunakan untuk mencocokkan alamat email dengan AngularJS

^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$

Pola lookahead positif pertama input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_55 menyetel panjang maksimum menjadi 254 karakter. Lookahead positif kedua input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_56 menetapkan maksimum 64 karakter sebelum tanda input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"57 untuk nama pengguna

Pandangan negatif (?. pola)

Kebalikan dari input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_54. Cocokkan jika input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_59 tidak ada. Misalnya, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"60 cocok dengan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"61 di input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"62 (tidak mengkonsumsi input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"63); . Sedangkan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"_65 cocok dengan input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"61 di input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"64, tetapi tidak find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++43

Tampilan Positif (?pola)

Nonaktifkan backtracking, meskipun ini dapat menyebabkan kegagalan pencocokan

Bersyarat (?(Cond)lalu. kalau tidak)

[MELAKUKAN]

Unicode

Karakter meta find() found substring "00123" starting at index 3 and ending at index 8 find() found substring "456" starting at index 11 and ending at index 14 find() found substring "0" starting at index 15 and ending at index 16 matches() found nothing lookingAt() found nothing abc**xyz456_0 abc++xyz++_++85, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2371, (karakter kata dan bukan kata), "x"5, input = "The first and second instances" regex = .* matches "first and second" But regex = .*? produces two matches: "first" and "second"13 (batas kata dan bukan kata) menggabungkan kembali karakter Unicode

Bisakah kita menggunakan regex dalam JavaScript?

Dalam JavaScript, Anda dapat menggunakan ekspresi reguler dengan metode RegExp(). test() dan exec() . Ada juga beberapa metode string yang memungkinkan Anda melewatkan RegEx sebagai parameternya. Mereka. match() , replace() , search() , dan split(). Mengeksekusi pencarian kecocokan dalam sebuah string dan mengembalikan array informasi.

Apa itu $1 di regex JS?

Misalnya, pola penggantian $1 menunjukkan bahwa substring yang cocok akan diganti oleh grup yang ditangkap pertama .

Bagaimana cara membuat ekspresi reguler dinamis dalam JavaScript?

Konstruktor RegExp membuat objek ekspresi reguler untuk mencocokkan teks dengan pola . var pola1 = '. \\(. =\\(. -\\('; var pattern2 = '. \\(. =\\(. -\\(. \\(. =\\(. -\\('; var regex = RegExp baru(pola1 + '. ' + pattern2, 'gi'); . cocok(regex); .

Bagaimana cara membandingkan regex dalam JavaScript?

Fungsi JavaScript String match() adalah fungsi bawaan dalam JavaScript yang digunakan untuk mencari kecocokan string dengan ekspresi reguler apa pun. Jika kecocokan ditemukan, maka ini akan mengembalikan kecocokan sebagai larik.

Postingan terbaru

LIHAT SEMUA