Actions

Reguláris kifejezések használata

From LimeSurvey Manual

Revision as of 09:34, 24 October 2023 by Maren.fritz (talk | contribs) (Created page with "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:")

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.

Template:Megjegyzés

  Figyelem : Kérjük, vegye figyelembe, hogy az alábbi példák mindegyike egy sorba van írva!



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|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])$/

US states

To validate for one state use the following (example is Texas):

  • TX uppercase only:
    /^(TX)$/
    
  • tx lowercase only:
    /^(tx)$/
    
  • TX upper or lowercase:
    /^([T|t][X|x])$/
    


Profanity Filter

To filter profanity words from an answer:

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

Replace "ENTERPROFANITYHERE" with your bad word.

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.