Actions

Using regular expressions/de: Difference between revisions

From LimeSurvey Manual

No edit summary
(Updating to match new version of source page)
Line 16: Line 16:
=E-Mail-Validierung=
=E-Mail-Validierung=


<source>
<source lang="html">
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
</source>
</source>
Line 24: Line 24:
==Australische Postleitzahlen:==
==Australische Postleitzahlen:==


  <source>/^[0-9]{4}/</source>
  <source lang="html">/^[0-9]{4}/</source>


==Brasilianische Postleitzahlen==
==Brasilianische Postleitzahlen==


  <source>/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/</source>
  <source lang="html">/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/</source>


==Kanadische Postleitzahlen==
==Kanadische Postleitzahlen==


  <source>/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/</source>
  <source lang="html">/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/</source>


==US Postleitzahlen==
==US Postleitzahlen==


  <source>/^[0-9]{5}([- /]?[0-9]{4})?$/</source>
  <source lang="html">/^[0-9]{5}([- /]?[0-9]{4})?$/</source>


==UK Postleitzahlen==
==UK Postleitzahlen==


  <source>/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i</source>
  <source lang="html">/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i</source>


Note that this is not very exact, and a more exact validation is much more complex.  For example, see [http://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer] and [http://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia] for more information.
Note that this is not very exact, and a more exact validation is much more complex.  For example, see [http://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer] and [http://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia] for more information.
Line 48: Line 48:
==US phone numbers==
==US phone numbers==


  <source>/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/</source>
  <source lang="html">/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/</source>


or
or


  <source>/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/</source>
  <source lang="html">/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/</source>


This second option will match all phone Canadian and US phone numbers that include non-digit symbols including
This second option will match all phone Canadian and US phone numbers that include non-digit symbols including


  <source> . ( ) - (space)</source>
  <source lang="html"> . ( ) - (space)</source>


This will allow you to match phone numbers which resemble below.
This will allow you to match phone numbers which resemble below.
Line 90: Line 90:
Very precise:
Very precise:


<source>/^\(?(?:\+?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})$/
<source lang="html">/^\(?(?:\+?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})$/
</source>
</source>


Line 96: Line 96:
Not very precise:
Not very precise:


<source>/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/</source>
<source lang="html">/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/</source>


===All Australian phone numbers (landlines only - area code required)===
===All Australian phone numbers (landlines only - area code required)===
Line 102: Line 102:
Very precise:
Very precise:


<source>/^\(?(?:\+?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}$/</source>
<source lang="html">/^\(?(?:\+?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}$/</source>




Not very precise:
Not very precise:


<source>/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/</source>
<source lang="html">/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/</source>


===New South Wales landline phone numbers (area code optional)===
===New South Wales landline phone numbers (area code optional)===
Line 113: Line 113:
Very precise:
Very precise:


<source>/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/</source>


Not very precise:
Not very precise:


<source>/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


===Victorian and Tasmanian landline phone numbers (area code optional)===
===Victorian and Tasmanian landline phone numbers (area code optional)===
Line 123: Line 123:
Very precise:
Very precise:


<source>/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/</source>


Not very precise:
Not very precise:


<source>/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


===Queensland landline phone numbers (area code optional)===
===Queensland landline phone numbers (area code optional)===
Line 133: Line 133:
Very precise:
Very precise:


<source>/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/</source>




Not very precise:
Not very precise:


<source>/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


===South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)===
===South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)===
Line 144: Line 144:
Very precise:
Very precise:


<source>/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/</source>


Not very precise:
Not very precise:


<source>/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


===Australian mobile phone numbers only===
===Australian mobile phone numbers only===
Line 154: Line 154:
Very precise:
Very precise:


<source>/^(?:\+?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}$/</source>
<source lang="html">/^(?:\+?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}$/</source>




Not very precise:
Not very precise:


<source>/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


==Belgian phone number==
==Belgian phone number==
  <source>/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/</source>
  <source lang="html">/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/</source>
==Belgian mobile phone number==
==Belgian mobile phone number==
  <source>/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/</source>
  <source lang="html">/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/</source>
==French phone number==
==French phone number==
  <source>/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/</source>
  <source lang="html">/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/</source>
==French mobile phone number==
==French mobile phone number==
  <source>/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/</source>
  <source lang="html">/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/</source>
==Luxemburg phone number==
==Luxemburg phone number==
  <source>/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/</source>
  <source lang="html">/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/</source>
==Luxemburg mobile phone number==
==Luxemburg mobile phone number==
  <source>/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/</source>
  <source lang="html">/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/</source>
=German marks (with optional plus or minus)=
=German marks (with optional plus or minus)=
  <source>/^[1-6]{1}[\+|\-]?$/</source>
  <source lang="html">/^[1-6]{1}[\+|\-]?$/</source>
=Age validation=
=Age validation=
Example: Age 20-99
Example: Age 20-99
  <source>/([2-9][0-9])/</source>
  <source lang="html">/([2-9][0-9])/</source>




Example: Age 18-35
Example: Age 18-35
  <source>/(1[8-9]|2[0-9]|3[0-5])/</source>
  <source lang="html">/(1[8-9]|2[0-9]|3[0-5])/</source>




Example: Age 19-65
Example: Age 19-65
  <source>/^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>
  <source lang="html">/^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>


=Number validation=
=Number validation=
==Numbers from 1 to 99999==
==Numbers from 1 to 99999==
  <source>/^([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])$/</source>
  <source lang="html">/^([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])$/</source>
  <source>/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster</source>
  <source lang="html">/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster</source>
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==
  <source>/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/</source>
  <source lang="html">/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/</source>
Accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but
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
rejects numbers like 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
Line 198: Line 198:
==Number validation with optional decimal (for price)==
==Number validation with optional decimal (for price)==
Accepts numbers from 0 to 199, with 2 decimal optional:
Accepts numbers from 0 to 199, with 2 decimal optional:
  <source>/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/</source>
  <source lang="html">/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/</source>




Line 204: Line 204:
including all of the following: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00
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
but not 1,23.00, 12,3.4 or 1234,43.04
  <source>/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>
  <source lang="html">/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>
   
   
Similar to the above: Forces two decimal points but accepts a "0" before decimal separator ",".
Similar to the above: Forces two decimal points but accepts a "0" before decimal separator ",".
  <source>/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>
  <source lang="html">/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>


Same as above but the two decimal points are optional:
Same as above but the two decimal points are optional:
<source>/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/ </source>
<source lang="html">/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/ </source>


==Month (1-12)==
==Month (1-12)==
Line 216: Line 216:
If you want to ask for the month a person was born you can validate the input as follows:
If you want to ask for the month a person was born you can validate the input as follows:


  <source>/^[0]*[1-9]$|^[0]*1[0-2]$/</source>
  <source lang="html">/^[0]*[1-9]$|^[0]*1[0-2]$/</source>


=Minimum width (set to 3 in this example)=
=Minimum width (set to 3 in this example)=


  <source>/^.{3,}$/</source>
  <source lang="html">/^.{3,}$/</source>


=Currency=
=Currency=
Line 226: Line 226:
==US currency (dollar sign and cents optional)==
==US currency (dollar sign and cents optional)==


  <source>/^\$?\d+(\.(\d{2}))?$/</source>
  <source lang="html">/^\$?\d+(\.(\d{2}))?$/</source>


Check for comma usage:
Check for comma usage:
<source>/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/</source>
<source lang="html">/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/</source>


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


  <source>/^(\d+)(\.\d(05)?)?$/</source>
  <source lang="html">/^(\d+)(\.\d(05)?)?$/</source>


=Validate score=
=Validate score=
Line 241: Line 241:
==1-10==
==1-10==


  <source>/^[1-9]{1}$|^10$/</source>
  <source lang="html">/^[1-9]{1}$|^10$/</source>


==1-100==
==1-100==


  <source>/^[1-9]?[0-9]{1}$|^100$/</source>
  <source lang="html">/^[1-9]?[0-9]{1}$|^100$/</source>


=Text validation=
=Text validation=
Line 253: Line 253:
The following test for at least one word per line for at least 3 lines and no more than 10 lines.
The following test for at least one word per line for at least 3 lines and no more than 10 lines.


  <source>/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is</source>
  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is</source>


If you wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g.
If you wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g.


  <source>/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is</source>
  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is</source>


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


  <source>/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is</source>
  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is</source>


==Word count==
==Word count==


  <source>The following restricts the number of words allowed to a minimum of 1 and a maximum of 200
  The following restricts the number of words allowed to a minimum of 1 and a maximum of 200


/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</source>
<source lang="html">/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</source>


  <source>To increase the minimum change the zero part of {0,199}
  To increase the minimum change the zero part of {0,199}


To increase or decrease the maximum change the "199" part of {0,199}</source>
To increase or decrease the maximum change the "199" part of {0,199}


=Time validation=
=Time validation=
Line 279: Line 279:
The following three validation strings test for 24 hour time (in order of appearences) without seconds, with optional seconds lastly with seconds required.
The following three validation strings test for 24 hour time (in order of appearences) without seconds, with optional seconds lastly with seconds required.


<source>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</source>
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</source>


<source>/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/</source>
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/</source>


<source>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</source>
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</source>




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


<source>/^(?">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))$/</source>
<source lang="html">/^(?">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))$/</source>


<source>/^(?: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))$/</source>
<source lang="html">/^(?: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))$/</source>


<source>/^(?: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))$/</source>
<source lang="html">/^(?: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))$/</source>




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


<source>/^(?:(?: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])$/</source>
<source lang="html">/^(?:(?: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])$/</source>


<source>/^(?:(?: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])?)$/</source>
<source lang="html">/^(?:(?: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])?)$/</source>


<source>/^(?:(?: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])$/</source>
<source lang="html">/^(?:(?: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])$/</source>


=US states=
=US states=


To validate for one state use the following (example is Texas):
To validate for one state use the following (example is Texas):
*TX uppercase only = <source>/^(TX)$/</source>
*TX uppercase only = <source lang="html">/^(TX)$/</source>
*tx lowercase only = <source>/^(tx)$/</source>
*tx lowercase only = <source lang="html">/^(tx)$/</source>
*TX upper or lowercase = <source>/^([T|t][X|x])$/</source>
*TX upper or lowercase = <source lang="html">/^([T|t][X|x])$/</source>


=Profanity Filter=
=Profanity Filter=
Line 316: Line 316:
To filter profanity words from an answer:
To filter profanity words from an answer:


  <source>/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/</source>
  <source lang="html">/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/</source>


Replace "ENTERPROFANITYHERE" with your bad word.
Replace "ENTERPROFANITYHERE" with your bad word.


The \b will allow passing of words such as "assassination" & "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.
The \b will allow passing of words such as "assassination" & "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.

Revision as of 16:10, 26 February 2018

Reguläre Ausdrücke müssen am Anfang und Ende mit einem Schrägstrich ("/") umschlossen sein. Sie finden eine gute Bibliothek mit regulären Ausdrücken auf http://www.regexlib.net/. Diese Ausdrücke werden fast alle funktionieren, wenn Sie diese mit dem Schrägstrich einschließen.

Um Ihre RegEx zu testen, können Sie diesen RegEx-Tester verwenden.

"Bitte fügen Sie erfolgreich getestet reguläre Ausdrücke dieser Seite hinzu!"

Beispiele (beachten Sie, dass dies alles Einzeiler sind):

Wichtig: Reguläre Ausdrücke in Bedingungen

Beachten Sie, dass bei der Verwendung von regulären Ausdrücken im Bedingungseditor, der Anfangs-/Endschrägstrich NICHT benutzt werden darf.

E-Mail-Validierung

/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

Postleitzahlen

Australische Postleitzahlen:

/^[0-9]{4}/

Brasilianische Postleitzahlen

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

Kanadische Postleitzahlen

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

US Postleitzahlen

/^[0-9]{5}([- /]?[0-9]{4})?$/

UK Postleitzahlen

/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

Note that this is not very exact, and a more exact validation is much more complex.  For example, see StackOverflow answer and Wikipedia for more information.

Phone numbers

US phone numbers

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/

or

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

This second option will match all phone Canadian and US phone numbers that include non-digit symbols including

 . ( ) - (space)

This will allow you to match phone numbers which resemble below.

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

Australian phone numbers

The following patterns match all various Australian mobile and landline phone numbers including with "+61" country prefix eg:

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • +61 2 3456 789

But not:

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

Klammern, Leerzeichen und Bindestriche werden ignoriert.

The 'Very precise:' versions listed here match against the first four or five digits in a number to ensure that they are valid Australian numbers.

The 'Not very precise:' only match against the first and second digit so may allow invaid numbers.

All Australian phone numbers (mobile and landline - area code required)

Very precise:

/^\(?(?:\+?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})$/


Not very precise:

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

All Australian phone numbers (landlines only - area code required)

Very precise:

/^\(?(?:\+?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}$/


Not very precise:

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

New South Wales landline phone numbers (area code optional)

Very precise:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

Not very precise:

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

Victorian and Tasmanian landline phone numbers (area code optional)

Very precise:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

Not very precise:

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

Queensland landline phone numbers (area code optional)

Very precise:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/


Not very precise:

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)

Very precise:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/

Not very precise:

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

Australian mobile phone numbers only

Very precise:

/^(?:\+?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}$/


Not very precise:

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

Belgian phone number

/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/

Belgian mobile phone number

/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

French phone number

/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/

French mobile phone number

/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/

Luxemburg phone number

/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

Luxemburg mobile phone number

/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

German marks (with optional plus or minus)

/^[1-6]{1}[\+|\-]?$/

Age validation

Example: Age 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])?$/


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

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

The following test 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 wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g.

/(?:[^,.;:?!& \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 on between 1 and 5 lines, you can change the content of the last curley 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 of writing 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 "short free text" with one of the validation regular expressions below:

The following three validation strings test for 24 hour time (in order of appearences) 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" & "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.