Използване на регулярни изрази
From LimeSurvey Manual
Регулярните изрази трябва да започват и завършват с наклонена черта ("/"). Можете да намерите добра библиотека от регулярни изрази на http://www.regexlib.net/. Тези модели почти винаги ще работят, ако са заобиколени от наклонени черти.
За да тествате своя регулярен израз, можете да използвате този тестер за регулярен израз.
Важно: Регулярни изрази в условия
Имайте предвид, че когато използвате регулярни изрази в редактора на условия, НЕ включвайте началната и крайната наклонена черта.
Потвърждение на имейл
Актуализация (12/2018): Тъй като тези дни имената на домейни не могат да съдържат само специални знаци като „ü“, но също така използват повече от 3 знака като име на домейн като .tech или .company, регулярният израз за имейл по-долу проверява само дали „@“ и „.“ съществува в рамките на въведения имейл адрес.
/^.+?@.+?\..+$/
Ако искате да потвърдите един адрес на ред, в многоредово дълго текстово поле:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/
При този остарял регулярен израз името на домейна е ограничено до 3 знака, което не покрива всички налични домейни:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Пощенски кодове
Австралийски пощенски кодове:
/^[0-9]{4}/
Бразилски пощенски кодове
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Канадски пощенски кодове
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Пощенски кодове на САЩ
/^[0-9]{5}([- /]?[0-9]{4})?$/
За да започне пощенският код с нула, използвайте:
/^[0-9]{5}(?:-[0-9]{4})?$/
Пощенски кодове в Обединеното кралство
/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Имайте предвид, че това не е много точно и по-точното валидиране е много по-сложно. Например вижте StackOverflow отговор и Wikipedia за повече информация.
Френски пощенски кодове
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/
Горният израз е много точен и ще провери дали френският департамент съществува или не (първите две цифри), включително отвъдморските департаменти и отвъдморските територии (DOM-TOM).
Телефонни номера
Телефонни номера в САЩ
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ]?\d{4}$/
или
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Тази втора опция ще съответства на всички телефонни номера в Канада и САЩ, които включват нецифрени символи, включително:
. ( ) - (интервал)
Това ще ви позволи да съпоставите телефонни номера, които приличат на по-долу:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Австралийски телефонни номера
Следните модели съответстват на всички различни австралийски мобилни и стационарни телефонни номера, включително с префикс за държава "+61":
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- + 61 2 3456 789
Но не:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Скобите, интервалите и тиретата се игнорират.
Версиите „Много точно:“, изброени тук, съвпадат с първите четири или пет цифри в числото, за да се гарантира, че са валидни австралийски номера.
„Не много точно:“ съвпада само с първата и втората цифра, така че може да позволи невалидни числа.
Всички австралийски телефонни номера (мобилни и стационарни - изисква се код на региона)
Много точно:
/^\(?(?:\+?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})$/
Не много точно:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Всички австралийски телефонни номера (само стационарни - изисква се код на региона)
Много точно:
/^\(?(?:\+?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}$/
Не много точно:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Стационарни телефонни номера в Нов Южен Уелс (кода на региона по избор)
Много точно:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Не много точно:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Викториански и тасманийски стационарни телефонни номера (кода на региона по избор)
Много точно:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Не много точно:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Стационарни телефонни номера в Куинсланд (кода на региона по избор)
Много точно:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Не много точно:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Стационарни телефонни номера на Южна Австралия, Северна територия, Западна Австралия (кода на региона по избор)
Много точно:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/
Не много точно:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Само австралийски мобилни телефонни номера
Много точно:
/^(?:\+?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}$/
Не много точно:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Белгийски телефонен номер
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/
Белгийски номер на мобилен телефон
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Френски телефонен номер
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Френски номер на мобилен телефон
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Телефонен номер в Люксембург
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Номер на мобилен телефон в Люксембург
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Германски марки (с незадължителен плюс или минус)
/^[1-6]{1}[\+|\-]?$/
Потвърждение на възрастта
Пример: Възраст 20-99
/([2-9][0-9])/
Пример: Възраст 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Пример: Възраст 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Потвърждение на номера
Числа от 1 до 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}$/ прави същото като по-горе, но трябва да работи малко по-бързо
Числа от 1 до 999, 1.000 до 999.999 до 999.999.999
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Приема числа от 1 до 999, 1.000 до 999.999 до 999.999.999, но отхвърля числа като 999.1.1, 94.22.22, 999.1.22, 999.11.1, 999.1.333
Проверка на число с опционален десетичен знак (за цена)
Приема числа от 0 до 199, с 2 десетични знака по избор:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/
Проверка на числото с разделител за хиляди
Интервал като разделител, без минус
/^(?!0)\d{1,3}(\ \d{3})*$/
Точка като разделител, минусът е разрешен
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Той принуждава два знака след десетичната запетая и приема числа от 1,00 до 999 999 999,00 със запетая по избор, разделяща хиляди/милиони , включително всички от следните: 1,00, 1000,00, 12 345,67, 12345,02, 123 456 468,00, 1234566. 00, 123456789.00 но не 1 ,23.00, 12,3.4 или 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
!Н!
Подобно на горното: Принуждава две десетични точки, но приема "0" преди десетичния разделител ",".
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Същото като по-горе, но двете десетични точки не са задължителни:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2}) ?$/
Месец (1-12)
Ако искате да попитате за месеца, в който човек е роден, можете да потвърдите въведеното, както следва:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Минимална ширина (настроена на 3 в този пример)
/^.{3,}$/
Валута
Валута на САЩ (знак за долар и центове по избор)
/^\$?\d+(\.(\d{2}))?$/
Проверете за използване на запетая:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Швейцарска цена
Число с две десетични числа след десетичната запетая, последното от които е или 5, или 0:
/^(\d+)(\.\d(05)?)?$/
Потвърдете резултата
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Текстова проверка
тип въпрос с множество кратки текстове не поддържа минимални или максимални отговори в момента. Един начин за заобикаляне на това е да използвате дълъг свободен текст тип въпрос с регулярен израз.
Изразът по-долу тества поне една дума на ред за поне 3 реда и не повече от 10 реда:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){2,10}/е
Ако искате, кажете пет думи на ред, можете да промените първата и последната звездичка на {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.; :?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/е
Ако искате една или повече думи на ред (между ред 1 и ред 5), можете да промените съдържанието, намиращо се в последните фигурни скоби, на 0,4 (обърнете внимание, че използвате 0, защото вече намирате съответствие първият ред).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){0,4}/е
Брой на думите
Следното ограничава броя на разрешените думи до минимум 1 и максимум 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
За да увеличите минимума, променете нулевата част от {0,199}.
За да увеличите или намалите максимума, променете частта "199" на {0,199}.
Времева валидация
Има няколко начина за записване на формати за време. Някои от възможните опции са 12 часа или 24 часа, със или без секунди. Въпреки че е опция да използвате тип въпрос за дата (може също да улови време), можете да използвате тип въпрос с кратък свободен текст с един от регулярните изрази за валидиране по-долу.
Следните три валидиращи низа тестват за 24 часа време (по реда на появяване) без секунди, с незадължителни секунди накрая с необходими секунди:
/^(?:[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]$/
Следните три съответстват на 12 часа време, както по-горе със секунди, незадължителни секунди и със задължителни секунди:
/^(?">00:[0-5][0-9] (?:сутрин|сутрин)|(?: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] (?:сутрин|сутрин)|(?: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))$/
Следните три съвпадат с 12 или 24 часово време, както по-горе, със секунди, незадължителни секунди и със задължителни секунди:
/^(?:(?:00:[0-5][0-9] (?:сутрин|сутрин)|(?: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|сутрин)|(?: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] (?:сутрин|сутрин)|(?: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])$/
Щати на САЩ
За валидиране за един щат използвайте следното (пример Тексас):
- TX само с главни букви:
/^(TX)$/
- tx само малки букви:
/^(tx)$/
- TX главни или малки букви:
/^([T|t][X|x])$/
Филтър за ругатни
За да филтрирате нецензурни думи от отговор:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Заменете „ENTERFANITYHERE“ с вашата лоша дума.
The \b will allow passing of words such as "assassination" and "hello" if you enter "ass" or "hell" as your profanity word. This also works if you are trying to omit other words, names etc. from answers.
Helpful links
In the beginning of this wiki section, we recommend you to use https://regex101.com/ to test/create regular expressions. You can also use https://www.regextester.com/ to create expressions in case you are unhappy about the first option. You can use https://extendsclass.com/regex-tester.html to visualize regular expressions.