Actions

Using regular expressions/hu: Difference between revisions

From LimeSurvey Manual

(Created page with "==Belga telefonszám== <source lang="html"> /^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/</source> ==Belga mobiltelefonszám== <source lang="html"> /^((\+|00)3...")
(Created page with "=Életkor érvényesítése=")
Line 200: Line 200:




=Age validation=
=Életkor érvényesítése=




Example: Age 20-99
Példa: 20-99
<source lang="html">/([2-9][0-9])/</source>
<source lang="html"> /([2-9][0-9])/</source>


Example: Age 18-35
Example: Age 18-35

Revision as of 09:32, 24 October 2023

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

Example: Age 18-35

/(1[8-9]|2[0-9]|3[0-5])/

Example: Age 19-65

/^(1[8-9]|[2-5][0-9]|6[0-5])$/


Number validation

Numbers from 1 to 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

Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999

/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/

Accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but rejects numbers like 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Number validation with optional decimal (for price)

Accepts numbers from 0 to 199, with 2 decimal optional:

/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/

Number validation with thousand separator

Space as separator, no minus

/^(?!0)\d{1,3}(\ \d{3})*$/

Dot as separator, minus allowed

/^-?(?!0)\d{1,3}(\.\d{3})*$/

It forces two decimal points and accepts numbers from 1.00 to 999,999,999.00 with an optional comma delimiting thousands/millions including all of the following: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 but not 1,23.00, 12,3.4 or 1234,43.04

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Similar to the above: Forces two decimal points but accepts a "0" before decimal separator ",".

/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Same as above, but the two decimal points are optional:

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/

Month (1-12)

If you want to ask for the month a person was born you can validate the input as follows:

/^[0]*[1-9]$|^[0]*1[0-2]$/

Minimum width (set to 3 in this example)

/^.{3,}$/


Currency

US currency (dollar sign and cents optional)

/^\$?\d+(\.(\d{2}))?$/

Check for comma usage:

/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

Swiss price

A number with two decimal numbers after the decimal point of which the last one is either a 5 or a 0:

/^(\d+)(\.\d(05)?)?$/


Validate score

1-10

/^[1-9]{1}$|^10$/

1-100

/^[1-9]?[0-9]{1}$|^100$/


Text validation

The multiple short text question type doesn't support minimum or maximum answers at the moment. One way around this is to use a long free text question type with a regular expression.

The below expression tests for at least one word per line for at least 3 lines and no more than 10 lines:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is

If you want, say five words per line, you could change the first and last star/asterisk to {4,}:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is

If you wanted one or more words per line (between line 1 and line 5), you can change the content located within the last curly braces to 0,4 (note you use 0 because you're already matching the first line).

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is

Word count

The following restricts the number of words allowed to a minimum of 1 and a maximum of 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
To increase the minimum change the zero part of {0,199}.

To increase or decrease the maximum change the "199" part of {0,199}.

Time validation

There are a number of ways to write time formats. Some of the possible options are 12 hour or 24 hour, with seconds or without. Although it is an option to use the date question type (it can also capture time) you can use the short free text question type with one of the below validation regular expressions.

The following three validation strings test for 24 hour time (in order of appearances) without seconds, with optional seconds lastly with seconds required:

/^(?:[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]$/

The following three match 12 hour time, as above with seconds, optional seconds and with seconds required:

/^(?">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))$/

The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required:

/^(?:(?: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.