x

Bab utama

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Panduan memulai cepat - LimeSurvey 3.0+
  3. Instalasi - LimeSurvey CE
  4. Cara merancang survei yang baik (panduan)
  5. Memulai
  6. Mengelola LimeSurvey
  7. Survei - pengantar
  8. Pengaturan survei
  9. Menu survei
  10. Struktur survei
  11. Pertanyaan - pengantar
  12. Grup pertanyaan - pengantar
  13. Survei - manajemen
  14. Opsi toolbar survei
  15. Survei multibahasa
  16. ExpressionScript Engine - Panduan memulai cepat
  17. Fitur tanpa kategori dan fitur lanjutan
  18. FAQ Umum
  19. Pemecahan Masalah
  20. Solusi Sementara
  21. Lisensi
  22. Log perubahan versi
  23. Plugin
 Actions

Menggunakan persamaan reguler

From LimeSurvey Manual

Halaman ini mungkin diterjemahkan oleh mesin dan dapat mengandung kesalahan. Tampilkan versi asli bahasa Inggris · Perbaiki terjemahan ini
This page is a translated version of the page Using regular expressions and the translation is 100% complete.

Persamaan reguler harus diawali dan diakhiri dengan garis miring ("/"). Anda dapat menemukan pustaka persamaan reguler yang bagus di https://www.regexlib.net/. Pola-pola ini hampir selalu berfungsi jika diapit oleh garis miring.

Untuk menguji regex Anda, Anda dapat menggunakan penguji regex ini.

To improve this wiki section, we kindly ask you to add your successfully tested regular expression(s) to provide a better understanding of this feature to the new LimeSurvey (potential) users.
  Perhatian : Harap diperhatikan bahwa semua contoh di bawah ini ditulis dalam satu baris!



Penting: Persamaan reguler dalam kondisi

Perhatikan bahwa saat menggunakan persamaan reguler di editor kondisi, JANGAN sertakan garis miring di awal dan di akhir.


Validasi surel

Pembaruan (12/2018): Saat ini nama domain tidak hanya dapat memuat karakter khusus seperti “ü”, tetapi juga dapat menggunakan lebih dari 3 karakter sebagai nama domain seperti .tech atau .company. Karena itu, regex surel di bawah ini hanya memeriksa apakah “@” dan “.” ada di dalam alamat surel yang dimasukkan.

/^.+?@.+?\..+$/

Jika Anda ingin memvalidasi satu alamat per baris, dalam bidang teks panjang multibaris:

/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/

Pada regex usang ini, nama domain dibatasi hingga 3 karakter sehingga tidak mencakup semua domain yang tersedia:

/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

Kode pos

Kode pos Australia:

/^[0-9]{4}/

Kode pos Brasil

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

Kode pos Kanada

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

Kode pos AS

/^[0-9]{5}([- /]?[0-9]{4})?$/

Agar kode pos diawali dengan angka nol, gunakan:

/^[0-9]{5}(?:-[0-9]{4})?$/

Kode pos Inggris Raya

/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

Perhatikan bahwa ini tidak terlalu tepat, dan validasi yang lebih tepat jauh lebih rumit. Sebagai contoh, lihat jawaban StackOverflow dan Wikipedia untuk informasi lebih lanjut.

Kode pos Prancis

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/

Ekspresi di atas sangat tepat dan akan memeriksa apakah Departemen Prancis (dua digit pertama) ada atau tidak, termasuk Departemen seberang laut dan Wilayah seberang laut (DOM-TOM).


Nomor telepon

Nomor telepon AS

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/

atau

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

Opsi kedua ini akan cocok dengan semua nomor telepon Kanada dan AS yang menyertakan simbol non-digit, termasuk:

 . ( ) - (space)

Ini memungkinkan Anda mencocokkan nomor telepon yang menyerupai contoh di bawah ini:

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

Nomor telepon Australia

Pola berikut cocok dengan berbagai nomor telepon seluler dan telepon rumah Australia, termasuk yang menggunakan prefiks negara "+61":

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • +61 2 3456 789

Tetapi tidak cocok dengan:

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

Tanda kurung, spasi, dan tanda hubung diabaikan.

Versi 'Sangat presisi:' yang tercantum di sini mencocokkan empat atau lima digit pertama dalam sebuah nomor untuk memastikan bahwa nomor tersebut adalah nomor Australia yang valid.

Versi 'Kurang presisi:' hanya mencocokkan digit pertama dan kedua sehingga mungkin mengizinkan nomor yang tidak valid.

Semua nomor telepon Australia (seluler dan telepon rumah - kode area wajib)

Sangat presisi:

/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/

Kurang presisi:

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

Semua nomor telepon Australia (khusus telepon rumah - kode area wajib)

Sangat presisi:

/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/

Kurang presisi:

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

Nomor telepon rumah New South Wales (kode area opsional)

Sangat presisi:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

Kurang presisi:

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

Nomor telepon rumah Victoria dan Tasmania (kode area opsional)

Sangat presisi:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

Kurang presisi:

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

Nomor telepon rumah Queensland (kode area opsional)

Sangat presisi:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/

Kurang presisi:

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

Nomor telepon rumah Australia Selatan, Northern Territory, Australia Barat (kode area opsional)

Sangat presisi:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/

Kurang presisi:

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

Khusus nomor telepon seluler Australia

Sangat presisi:

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/

Kurang presisi:

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

Nomor telepon Belgia

/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/

Nomor telepon seluler Belgia

/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

Nomor telepon Prancis

/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/

Nomor telepon seluler Prancis

/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/

Nomor telepon Luksemburg

/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

Nomor telepon seluler Luksemburg

/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

Nilai Jerman (dengan plus atau minus opsional)

/^[1-6]{1}[\+|\-]?$/


Validasi usia

Contoh: Usia 20-99

/([2-9][0-9])/

Contoh: Usia 18-35

/(1[8-9]|2[0-9]|3[0-5])/

Contoh: Usia 19-65

/^(1[8-9]|[2-5][0-9]|6[0-5])$/


Validasi angka

Angka dari 1 hingga 99999

/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster

Angka dari 1 hingga 999, 1.000 hingga 999.999 hingga 999.999.999

/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/

Menerima angka dari 1 hingga 999, 1.000 hingga 999.999 hingga 999.999.999 tetapi menolak angka seperti 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Validasi angka dengan desimal opsional (untuk harga)

Menerima angka dari 0 hingga 199, dengan 2 desimal opsional:

/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/

Validasi angka dengan pemisah ribuan

Spasi sebagai pemisah, tanpa tanda minus

/^(?!0)\d{1,3}(\ \d{3})*$/

Titik sebagai pemisah, tanda minus diperbolehkan

/^-?(?!0)\d{1,3}(\.\d{3})*$/

Ekspresi ini memaksa dua angka desimal dan menerima angka dari 1.00 hingga 999,999,999.00 dengan koma opsional sebagai pemisah ribuan/jutaan, termasuk semua contoh berikut: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 tetapi tidak menerima 1,23.00, 12,3.4 atau 1234,43.04

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Mirip dengan di atas: memaksa dua angka desimal tetapi menerima "0" sebelum pemisah desimal ",".

/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Sama seperti di atas, tetapi dua angka desimal bersifat opsional:

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/

Bulan (1-12)

Jika Anda ingin menanyakan bulan kelahiran seseorang, Anda dapat memvalidasi input sebagai berikut:

/^[0]*[1-9]$|^[0]*1[0-2]$/

Lebar minimum (diatur ke 3 dalam contoh ini)

/^.{3,}$/


Mata uang

Mata uang AS (tanda dolar dan sen opsional)

/^\$?\d+(\.(\d{2}))?$/

Periksa penggunaan koma:

/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

Harga Swiss

Angka dengan dua digit desimal setelah titik desimal, di mana digit terakhirnya adalah 5 atau 0:

/^(\d+)(\.\d(05)?)?$/


Validasi skor

1-10

/^[1-9]{1}$|^10$/

1-100

/^[1-9]?[0-9]{1}$|^100$/


Validasi teks

Jenis pertanyaan Beberapa teks pendek saat ini tidak mendukung jawaban minimum atau maksimum. Salah satu solusinya adalah menggunakan jenis pertanyaan Teks bebas panjang dengan persamaan reguler.

Ekspresi di bawah ini menguji setidaknya satu kata per baris untuk minimal 3 baris dan tidak lebih dari 10 baris:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is

Jika Anda menginginkan, misalnya, lima kata per baris, Anda dapat mengubah tanda bintang pertama dan terakhir menjadi {4,}:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is

Jika Anda menginginkan satu kata atau lebih per baris (antara baris 1 dan baris 5), Anda dapat mengubah isi di dalam kurung kurawal terakhir menjadi 0,4 (perhatikan bahwa Anda menggunakan 0 karena baris pertama sudah dicocokkan).

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is

Jumlah kata

Ekspresi berikut membatasi jumlah kata yang diperbolehkan dengan minimum 1 dan maksimum 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Untuk menaikkan minimum, ubah bagian nol pada {0,199}.

Untuk menaikkan atau menurunkan maksimum, ubah bagian "199" pada {0,199}.

Validasi waktu

Ada beberapa cara untuk menulis format waktu. Beberapa opsi yang mungkin adalah 12 jam atau 24 jam, dengan atau tanpa detik. Meskipun Anda dapat menggunakan jenis pertanyaan tanggal (jenis ini juga dapat menangkap waktu), Anda dapat menggunakan jenis pertanyaan Teks bebas singkat dengan salah satu persamaan reguler validasi di bawah ini.

Tiga string validasi berikut menguji waktu format 24 jam (berurutan) tanpa detik, dengan detik opsional, dan terakhir dengan detik wajib:

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/

Tiga ekspresi berikut mencocokkan waktu format 12 jam, seperti di atas: dengan detik, detik opsional, dan detik wajib:

/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/

Tiga ekspresi berikut mencocokkan waktu format 12 maupun 24 jam, seperti di atas: dengan detik, detik opsional, dan detik wajib:

/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/

Negara bagian AS

Untuk memvalidasi satu negara bagian, gunakan pola berikut (contohnya Texas):

  • TX hanya huruf besar:
    /^(TX)$/
    
  • tx hanya huruf kecil:
    /^(tx)$/
    
  • TX huruf besar atau kecil:
    /^([T|t][X|x])$/
    


Filter kata kasar

Untuk memfilter kata kasar dari sebuah jawaban:

/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/

Ganti "ENTERPROFANITYHERE" dengan kata kasar yang ingin Anda blokir.

Karakter \b memungkinkan kata seperti "assassination" dan "hello" tetap lolos jika Anda memasukkan "ass" atau "hell" sebagai kata kasar. Cara ini juga berfungsi jika Anda ingin menghilangkan kata lain, nama, dan sebagainya dari jawaban.


Tautan berguna

Di awal bagian wiki ini, kami menyarankan Anda menggunakan https://regex101.com/ untuk menguji/membuat ekspresi reguler. Anda juga dapat menggunakan https://www.regextester.com/ untuk membuat ekspresi jika Anda kurang puas dengan opsi pertama. Anda dapat menggunakan https://extendsclass.com/regex-tester.html untuk memvisualisasikan ekspresi reguler.