Reguláris kifejezések használata
From LimeSurvey Manual
A reguláris kifejezéseknek perjellel ("/") kell kezdődniük és befejeződniük. A reguláris kifejezések jó könyvtárát találja a http://www.regexlib.net/ oldalon. Ezek a minták szinte mindig működnek, ha előre ferde vonalak veszik őket körül.
A reguláris kifejezés teszteléséhez használja ezt a regex tesztelőt.
Fontos: Reguláris kifejezések feltételekben
Vegye figyelembe, hogy ha reguláris kifejezéseket használ a feltételszerkesztőben, NE használja a kezdő és a záró perjelet.
E-mail ellenőrzés
Frissítés (2018. 12.): Manapság a domainnevek nem csak speciális karaktereket tartalmazhatnak, mint például az „ü”, hanem 3-nál több karaktert is használnak domainnévként, például .tech vagy .company, az alábbi e-mail szabályszerű kifejezés csak akkor ellenőrzi, ha „@” és „.” létezik a megadott email címen belül.
/^.+?@.+?\..+$/
Ha soronként egy címet szeretne érvényesíteni, többsoros hosszú szövegmezőben:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/
Ennél az elavult regexnél a domain név 3 karakterre korlátozódik, ami nem fedi le az összes elérhető domaint:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Irányítószámok
Ausztráliai irányítószámok:
/^[0-9]{4}/
Brazil irányítószámok
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Kanadai irányítószámok
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
USA irányítószámok
/^[0-9]{5}([- /]?[0-9]{4})?$/
Ahhoz, hogy az irányítószám nullával kezdődjön, használja a következőket:
/^[0-9]{5}(?:-[0-9]{4})?$/
UK irányítószámai
/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Vegye figyelembe, hogy ez nem túl pontos, és a pontosabb érvényesítés sokkal összetettebb. További információért lásd például: StackOverflow answer és Wikipedia információ.
Francia irányítószámok
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/
A fenti kifejezés nagyon pontos, és ellenőrzi, hogy létezik-e a francia minisztérium (az első két számjegy), beleértve a tengerentúli megyéket és a tengerentúli területeket (DOM-TOM).
Telefonszámok
USA telefonszámok
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ]?\d{4}$/
vagy
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Ez a második lehetőség megfelel minden olyan kanadai és amerikai telefonszámnak, amelyek nem számjegyeket tartalmaznak, beleértve:
. ( ) - (hely)
Ez lehetővé teszi az alábbi telefonszámok egyeztetését:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Ausztrál telefonszámok
A következő minták megfelelnek az összes különböző ausztrál mobil és vezetékes telefonszámnak, beleértve a "+61" ország előtagot is:
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- + 61 2 3456 789
De nem:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
A zárójeleket, a szóközöket és a kötőjeleket figyelmen kívül hagyja.
Az itt felsorolt „Nagyon precíz:” verziók egy szám első négy vagy öt számjegyével egyeznek, így biztosítva, hogy érvényes ausztrál számok legyenek.
A „Nem túl pontos:” csak az első és a második számjegyhez egyezik, így előfordulhat, hogy helytelen számok is előfordulhatnak.
Minden ausztrál telefonszám (mobil és vezetékes - körzetszám szükséges)
Nagyon precíz:
/^\(?(?:\+?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})$/
Nem túl pontos:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Minden ausztrál telefonszám (csak vezetékes - körzetszám szükséges)
Nagyon precíz:
/^\(?(?:\+?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}$/
Nem túl pontos:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Új-Dél-Wales vezetékes telefonszámai (a körzetszám nem kötelező)
Nagyon precíz:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Nem túl pontos:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Viktoriánus és tasmán vezetékes telefonszámok (a körzetszám nem kötelező)
Nagyon precíz:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Nem túl pontos:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Queensland vezetékes telefonszámok (a körzetszám nem kötelező)
Nagyon precíz:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Nem túl pontos:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Dél-Ausztrália, Északi Terület, Nyugat-Ausztrália vezetékes telefonszámai (a körzetszám nem kötelező)
Nagyon precíz:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/
Nem túl pontos:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Csak ausztrál mobiltelefonszámok
Nagyon precíz:
/^(?:\+?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}$/
Nem túl pontos:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Belga telefonszám
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/
Belga mobiltelefonszám
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Francia telefonszám
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Francia mobiltelefonszám
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Luxemburg telefonszám
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Luxemburgi mobiltelefonszám
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Német jegyek (opcionális plusz vagy mínusz mellett)
/^[1-6]{1}[\+|\-]?$/
Életkor érvényesítése
Példa: 20-99
/([2-9][0-9])/
Példa: 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Példa: 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Számérvényesítés
Számok 1-től 99999-ig
/^([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}$/ ugyanazt csinálja, mint fent, de kicsit gyorsabban kell futnia
Számok 1-től 999-ig, 1000-től 999.999-ig 999.999.999-ig
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Elfogadja a számokat 1-től 999-ig, 1000-tól 999.999-ig 999.999.999-ig, de elutasítja az olyan számokat, mint a 999.1.1 , 94.22.22, 999.1.22, 999.199.1, 333.1.
Számérvényesítés opcionális tizedesjegyekkel (árért)
0-tól 199-ig számokat fogad el, 2 tizedesjegyet opcionálisan:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/
Számérvényesítés ezerelválasztóval
Szóköz, mint elválasztó, nincs mínusz
/^(?!0)\d{1,3}(\ \d{3})*$/
Pont elválasztóként, mínusz megengedett
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Két tizedesvesszőt kényszerít ki, és elfogadja az 1,00 és 999 999 999,00 közötti számokat opcionális vesszővel, amely ezreket/milliókat határoló beleértve a következők mindegyikét: 1,00, 1,000,00, 12,345,67, 12345,36,6,50,5 00, 123456789.00 de nem 1 ,23.00, 12,3.4 vagy 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Hasonló a fentiekhez: Két tizedesvesszőt kényszerít ki, de elfogad egy "0"-t a "," tizedeselválasztó előtt.
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Ugyanaz, mint fent, de a két tizedesvessző nem kötelező:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2}) ?$/
Hónap (1-12)
Ha meg szeretné kérdezni egy személy születési hónapját, a következőképpen érvényesítheti a bevitelt:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Minimális szélesség (ebben a példában 3-ra állítva)
/^.{3,}$/
Pénznem
USA valuta (dollárjel és cent nem kötelező)
/^\$?\d+(\.(\d{2}))?$/
Ellenőrizze a vesszőhasználatot:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Svájci ár
Két tizedesjegyből álló szám, amelynek a tizedespontja után az utolsó 5 vagy 0:
/^(\d+)(\.\d(05)?)?$/
Érvényesség ellenőrzése
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Szövegérvényesítés
A több rövid szöveges kérdéstípus jelenleg nem támogatja a minimális vagy maximális válaszokat. Ennek egyik módja egy hosszú szabad szövegű kérdéstípus reguláris kifejezéssel.
Az alábbi kifejezések soronként legalább egy szót tesztelnek legalább 3 és legfeljebb 10 sorban:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){2,10}/is
Ha szeretné, mondjon öt szót soronként, az első és az utolsó csillagot {4,}-re módosíthatja:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.; :?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
Ha soronként egy vagy több szót szeretne (az 1. és az 5. sor között), az utolsó kapcsos zárójelben található tartalmat módosíthatja 0,4-re (megjegyzendő, hogy 0-t használ, mert már megegyezik az első sor).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){0,4}/is
Szószám
A következőkben a megengedett szavak számát minimum 1-re és legfeljebb 200-ra korlátozza:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
A minimális érték növeléséhez módosítsa a {0,199} nulla részét.
A maximális érték növeléséhez vagy csökkentéséhez módosítsa a {0,199} „199” részét.
Időérvényesítés
Az időformátumok írásának számos módja van. Néhány lehetséges opció 12 órás vagy 24 órás, másodpercekkel vagy anélkül. Bár lehetőség van a dátum kérdéstípus használata (időt is rögzíthet), használhatja a rövid szabad szöveges kérdéstípus a következőkkel: az alábbi érvényesítési reguláris kifejezéseket.
A következő három érvényesítési sztring 24 órán keresztül tesztel (a megjelenés sorrendjében) másodpercek nélkül, végül opcionális másodpercekkel, és másodpercek szükségesek:
/^(?:[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]$/
A következő három egyezik a 12 órás idővel, mint fent, másodpercekkel, opcionális másodpercekkel és a szükséges másodpercekkel:
/^(?">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))$/
A következő három 12 vagy 24 órás időnek felel meg a fentiek szerint másodpercekkel, opcionális másodpercekkel és a szükséges másodpercekkel:
/^(?:(?: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|DE)|(?: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])$/
USA államok
Egy állapot érvényesítéséhez használja a következőket (például Texas):
- TX csak nagybetűkkel:
/^(TX)$/
- tx csak kisbetűvel:
/^(tx)$/
- TX nagy- vagy kisbetűk:
/^([T|t][X|x])$/
Trágárság szűrő
A trágár szavak kiszűrése a válaszból:
/^(?i)((?!\bENTERPROFANITY HERE\b).)*$(?-i)/
Cserélje ki az „ENTERPROFANITYHERE” szót a rossz szavára.
A \b lehetővé teszi az olyan szavak átadását, mint a "gyilkosság" és a "hello", ha a "segg" vagy a "pokol" szót írja be trágár szóként. Ez akkor is működik, ha más szavakat, neveket stb. próbál kihagyni a válaszokból.
Hasznos linkek
A wiki szakasz elején azt javasoljuk, hogy használja a https://regex101.com/ oldalt a reguláris kifejezések teszteléséhez/létrehozásához. A https://www.regextester.com/ segítségével kifejezéseket is létrehozhat arra az esetre, ha nem elégedett az első lehetőséggel. A https://extendsclass.com/regex-tester.html segítségével megjelenítheti a reguláris kifejezéseket.