Menggunakan ekspresi lazim
From LimeSurvey Manual
Ekspresi lazim mesti bermula dan berakhir dengan garis condong ke hadapan ("/"). Anda boleh mendapatkan pustaka ekspresi lazim yang baik di https://www.regexlib.net/. Corak ini hampir selalu berfungsi jika diapit oleh garis condong ke hadapan.
Untuk menguji regex anda, anda boleh menggunakan penguji regex ini.
Penting: Ekspresi lazim dalam syarat
Perhatikan bahawa apabila menggunakan ekspresi lazim dalam editor syarat, JANGAN sertakan garis condong di awal dan di akhir.
Pengesahan e-mel
Kemas kini (12/2018): Memandangkan kini nama domain bukan sahaja boleh mengandungi aksara khas seperti “ü” tetapi juga menggunakan lebih daripada 3 aksara sebagai nama domain seperti .tech atau .company, regex e-mel di bawah hanya menyemak sama ada “@” dan “.” wujud dalam alamat e-mel yang dimasukkan.
/^.+?@.+?\..+$/
Jika anda ingin mengesahkan satu alamat setiap baris, dalam medan teks panjang berbilang baris:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/
Pada regex lapuk ini, nama domain terhad kepada 3 aksara, yang tidak merangkumi semua domain yang ada:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Poskod
Poskod Australia:
/^[0-9]{4}/
Poskod Brazil
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Poskod Kanada
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Poskod AS
/^[0-9]{5}([- /]?[0-9]{4})?$/
Untuk poskod yang bermula dengan sifar, gunakan:
/^[0-9]{5}(?:-[0-9]{4})?$/
Poskod UK
/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Perhatikan bahawa ini tidak begitu tepat, dan pengesahan yang lebih tepat adalah jauh lebih rumit. Contohnya, lihat jawapan StackOverflow dan Wikipedia untuk maklumat lanjut.
Poskod Perancis
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/
Ungkapan di atas sangat tepat dan akan menyemak sama ada Jabatan Perancis wujud atau tidak (dua digit pertama), termasuk Jabatan seberang laut dan Wilayah seberang laut (DOM-TOM).
Nombor telefon
Nombor telefon 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,}$/
Pilihan kedua ini akan memadankan semua nombor telefon Kanada dan AS yang mengandungi simbol bukan digit termasuk:
. ( ) - (space)
Ini membolehkan anda memadankan nombor telefon yang menyerupai yang berikut:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Nombor telefon Australia
Corak berikut memadankan pelbagai nombor telefon mudah alih dan talian tetap Australia termasuk dengan awalan negara "+61":
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- +61 2 3456 789
Tetapi tidak:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Tanda kurung, ruang kosong dan tanda sempang diabaikan.
Versi 'Sangat tepat:' yang disenaraikan di sini memadankan empat atau lima digit pertama dalam sesuatu nombor untuk memastikan nombor tersebut ialah nombor Australia yang sah.
Versi 'Kurang tepat:' hanya memadankan digit pertama dan kedua, jadi nombor yang tidak sah mungkin dibenarkan.
Semua nombor telefon Australia (mudah alih dan talian tetap - kod kawasan diperlukan)
Sangat tepat:
/^\(?(?:\+?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 tepat:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Semua nombor telefon Australia (talian tetap sahaja - kod kawasan diperlukan)
Sangat tepat:
/^\(?(?:\+?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 tepat:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Nombor telefon talian tetap New South Wales (kod kawasan pilihan)
Sangat tepat:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Kurang tepat:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Nombor telefon talian tetap Victoria dan Tasmania (kod kawasan pilihan)
Sangat tepat:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Kurang tepat:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Nombor telefon talian tetap Queensland (kod kawasan pilihan)
Sangat tepat:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Kurang tepat:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Nombor telefon talian tetap South Australia, Northern Territory, Western Australia (kod kawasan pilihan)
Sangat tepat:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/
Kurang tepat:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Nombor telefon mudah alih Australia sahaja
Sangat tepat:
/^(?:\+?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 tepat:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Nombor telefon Belgium
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/
Nombor telefon mudah alih Belgium
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Nombor telefon Perancis
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Nombor telefon mudah alih Perancis
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Nombor telefon Luxembourg
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Nombor telefon mudah alih Luxembourg
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Gred Jerman (dengan tanda tambah atau tolak pilihan)
/^[1-6]{1}[\+|\-]?$/
Pengesahan umur
Contoh: Umur 20-99
/([2-9][0-9])/
Contoh: Umur 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Contoh: Umur 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Pengesahan nombor
Nombor 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
Nombor 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 nombor dari 1 hingga 999, 1.000 hingga 999.999 hingga 999.999.999 tetapi menolak nombor seperti 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
Pengesahan nombor dengan perpuluhan pilihan (untuk harga)
Menerima nombor dari 0 hingga 199, dengan 2 tempat perpuluhan secara pilihan:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/
Pengesahan nombor dengan pemisah ribu
Ruang sebagai pemisah, tanpa tanda tolak
/^(?!0)\d{1,3}(\ \d{3})*$/
Titik sebagai pemisah, tanda tolak dibenarkan
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Ia memaksa dua tempat perpuluhan dan menerima nombor dari 1.00 hingga 999,999,999.00 dengan koma pilihan sebagai pemisah ribu/juta termasuk semua yang berikut: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 tetapi bukan 1,23.00, 12,3.4 atau 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Serupa dengan di atas: Memaksa dua tempat perpuluhan tetapi menerima "0" sebelum pemisah perpuluhan ",".
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Sama seperti di atas, tetapi dua tempat perpuluhan adalah pilihan:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/
Bulan (1-12)
Jika anda ingin bertanya tentang bulan kelahiran seseorang, anda boleh mengesahkan input seperti berikut:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Lebar minimum (ditetapkan kepada 3 dalam contoh ini)
/^.{3,}$/
Mata wang
Mata wang AS (tanda dolar dan sen adalah pilihan)
/^\$?\d+(\.(\d{2}))?$/
Semak penggunaan koma:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Harga Switzerland
Nombor dengan dua digit perpuluhan selepas titik perpuluhan, dengan digit terakhir sama ada 5 atau 0:
/^(\d+)(\.\d(05)?)?$/
Mengesahkan skor
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Pengesahan teks
Jenis soalan Teks pendek berbilang buat masa ini tidak menyokong jawapan minimum atau maksimum. Satu cara untuk mengatasinya ialah menggunakan jenis soalan Teks bebas panjang dengan ekspresi lazim.
Ungkapan di bawah menguji sekurang-kurangnya satu perkataan setiap baris untuk sekurang-kurangnya 3 baris dan tidak lebih daripada 10 baris:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is
Jika anda mahu, katakan lima perkataan setiap baris, anda boleh menukar bintang/asterisk pertama dan terakhir kepada {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
Jika anda mahukan satu perkataan atau lebih setiap baris (antara baris 1 dan baris 5), anda boleh menukar kandungan di dalam kurungan kurawal yang terakhir kepada 0,4 (perhatikan bahawa anda menggunakan 0 kerana baris pertama sudah dipadankan).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is
Kiraan perkataan
Yang berikut mengehadkan bilangan perkataan yang dibenarkan kepada minimum 1 dan maksimum 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Untuk meningkatkan minimum, tukar bahagian sifar dalam {0,199}.
Untuk meningkatkan atau mengurangkan maksimum, tukar bahagian "199" dalam {0,199}.
Pengesahan masa
Terdapat beberapa cara untuk menulis format masa. Antara pilihan yang mungkin ialah 12 jam atau 24 jam, dengan saat atau tanpa saat. Walaupun anda boleh menggunakan jenis soalan tarikh (ia juga boleh menangkap masa), anda boleh menggunakan jenis soalan Teks percuma pendek dengan salah satu ekspresi lazim pengesahan di bawah.
Tiga rentetan pengesahan berikut menguji masa 24 jam (mengikut susunan kemunculan) tanpa saat, dengan saat pilihan dan akhir sekali dengan saat diperlukan:
/^(?:[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 yang berikut memadankan masa 12 jam, seperti di atas dengan saat, saat pilihan dan saat diperlukan:
/^(?">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 yang berikut memadankan sama ada masa 12 atau 24 jam seperti di atas dengan saat, saat pilihan dan saat diperlukan:
/^(?:(?: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])$/
Negeri AS
Untuk mengesahkan satu negeri, gunakan yang berikut (contohnya Texas):
- TX huruf besar sahaja:
/^(TX)$/
- tx huruf kecil sahaja:
/^(tx)$/
- TX huruf besar atau kecil:
/^([T|t][X|x])$/
Penapis kata kesat
Untuk menapis kata kesat daripada sesuatu jawapan:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Gantikan "ENTERPROFANITYHERE" dengan perkataan buruk anda.
\b akan membenarkan perkataan seperti "assassination" dan "helo" lulus jika anda memasukkan "ass" atau "hell" sebagai kata kesat anda. Ini juga berfungsi jika anda cuba mengecualikan perkataan lain, nama dan sebagainya daripada jawapan.
Pautan berguna
Pada permulaan bahagian wiki ini, kami mengesyorkan anda menggunakan https://regex101.com/ untuk menguji/mencipta ungkapan nalar. Anda juga boleh menggunakan https://www.regextester.com/ untuk mencipta ungkapan sekiranya anda tidak berpuas hati dengan pilihan pertama. Anda boleh menggunakan https://extendsclass.com/regex-tester.html untuk menggambarkan ungkapan nalar secara visual.