Menggunakan persamaan reguler
From LimeSurvey Manual
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.
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.