<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.limesurvey.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Evan</id>
	<title>LimeSurvey Manual - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.limesurvey.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Evan"/>
	<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/Special:Contributions/Evan"/>
	<updated>2026-08-16T23:55:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Using_regular_expressions&amp;diff=3684</id>
		<title>Using regular expressions</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Using_regular_expressions&amp;diff=3684"/>
		<updated>2010-09-30T01:27:24Z</updated>

		<summary type="html">&lt;p&gt;Evan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
(Perl) Regular Expressions must start and finish with a forward slash (&amp;quot;/&amp;quot;). You can find a good library of regular expressions at http://www.regxlib.net/. These patterns will almost all work if surrounded with the forward slash.&lt;br /&gt;
&lt;br /&gt;
To test your regex you can [http://www.regxlib.net/RETester.aspx use this regex tester].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please add successfully tested regular expressions!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Examples (note that these are all one line):&lt;br /&gt;
&lt;br /&gt;
=Email Validation:=&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Postcodes:=&lt;br /&gt;
&lt;br /&gt;
==Australian Postcodes:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[0-9]{4}/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Canadian Postcodes:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==US Postal Codes:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[0-9]{5}([- /]?[0-9]{4})?$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Phone Numbers=&lt;br /&gt;
&lt;br /&gt;
==US Phone Number:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This second option will match all phone Canadian and US phone numbers that include non-digit symbols including&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; . ( ) - (space)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to match phone numbers which resemble below.&lt;br /&gt;
*(555)555 5555&lt;br /&gt;
*555.555.5555&lt;br /&gt;
*555 555 5555&lt;br /&gt;
*(555)-555-5555&lt;br /&gt;
*555-555-5555&lt;br /&gt;
*555555555&lt;br /&gt;
&lt;br /&gt;
==Australian Phone Number:==&lt;br /&gt;
&lt;br /&gt;
The following patterns match all various Australian mobile and landline phone numbers including with &amp;quot;+61&amp;quot; country prefix eg:&lt;br /&gt;
*(02) 9123 6535&lt;br /&gt;
*03 1234-5345&lt;br /&gt;
*0412 345 678&lt;br /&gt;
*+61 2 3456 789&lt;br /&gt;
&lt;br /&gt;
But not:&lt;br /&gt;
* 234 3450 234&lt;br /&gt;
*a234 534 3432&lt;br /&gt;
*134567&lt;br /&gt;
*123456789013&lt;br /&gt;
&lt;br /&gt;
Brackets, white space and hypens are ignored.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NOTE: The &#039;PRECICE&#039; versions listed here match against the first four or five didgets in a number to ensure that they are valid Australian numbers.&lt;br /&gt;
&lt;br /&gt;
The &#039;NOT VERY PRECISE&#039; only match against the first and second didgit so may allow invaid numbers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===All Australian phone numbers (mobile and landline - area code required)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^\(?(?:\+?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})$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===All Australian phone numbers (landlines only - area code required)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^\(?(?:\+?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}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===New South Wales landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Victorian and Tasmanian landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Queensland landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Australian Mobile phone numbers only===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\+?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}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=German marks (with optional plus or minus)=&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-6]{1}[\+|\-]?$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Age Validation=&lt;br /&gt;
&lt;br /&gt;
===Example: Age 20-99===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/([2-9][0-9])/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example: Age 18-35===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/(1[8-9]|2[0-9]|3[0-5])/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example: Age 19-65===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;(1[8-9]|[2-5][0-9]|6[0-5])$&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Number validation=&lt;br /&gt;
&lt;br /&gt;
==Numbers from 1 to 99999==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^([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])$/&amp;lt;/nowiki&amp;gt;  &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/&lt;br /&gt;
&lt;br /&gt;
accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but&lt;br /&gt;
&lt;br /&gt;
rejects numbers like 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number validation with optionnal decimal (for price)==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^([1][0-9][0-9]|[1-9][0-9]|[0-9])[[\.)[0-9][0-9])?$/ accepts numbers from 0 to 199, with 2 decimal optionnal&amp;lt;/nowiki&amp;gt;  &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/&lt;br /&gt;
&lt;br /&gt;
 forces two decimal points&lt;br /&gt;
&lt;br /&gt;
 accepts numbers from 1.00 to 999,999,999.00 with an optional comma delimiting thousands/millions&lt;br /&gt;
&lt;br /&gt;
 including all of the following: 1.00, 1,000.00 , 12,345.67 , 12345,02 , 123,456,468.00 , 1234566.00 , 123456789.00&lt;br /&gt;
&lt;br /&gt;
 but not 1,23.00 , 12,3.4 or 1234,43.04&amp;lt;/nowiki&amp;gt;  &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/ same as above but the two decimal points are optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ==Month (1-12)==&lt;br /&gt;
&lt;br /&gt;
 If you want to ask for the month a person was born you can validate the input as follows:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;/^[0]*[1-9]$|^[0]*1[0-2]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 =Minimum width (set to 3 in this example)=&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;/^.{3,}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 =US Currency (dollar sign and cents optional)=&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;/^\$?\d+(\.(\d{2}]]?$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Validate score=&lt;br /&gt;
&lt;br /&gt;
==1-10==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-9]{1}$|^10$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==1-100==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-9]?[0-9]{1}$|^100$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Text validation=&lt;br /&gt;
&lt;br /&gt;
currently multiple short text doesn&#039;t support minimum or maximum answers. One way around this is to use a long free text type question with a regular expression.&lt;br /&gt;
&lt;br /&gt;
The following test for at least one word per line for at least 3 lines and no more than 10 lines. &amp;lt;nowiki&amp;gt;/(?:[&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+)*)(?:[,.;:?!&amp;amp; \n\r]?(?:\n|\r|\n\r|\r\n)(?:[&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+)*)){2,10}/is&amp;lt;/nowiki&amp;gt;If you wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g. &amp;lt;nowiki&amp;gt;/(?:[&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+){4,})(?:[,.;:?!&amp;amp; \n\r]?(?:\n|\r|\n\r|\r\n)(?:[&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+){4,})){2,10}/is&amp;lt;/nowiki&amp;gt;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&#039;re already matching the first line. &amp;lt;nowiki&amp;gt;/(?:[&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+)*)(?:[,.;:?!&amp;amp; \n\r]?(?:\n|\r|\n\r|\r\n)(?:[&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+)*)){0,4}/is&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Word count==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;The following restricts the number of words allowed to a minimum of 1 and a maximum of 200&lt;br /&gt;
&lt;br /&gt;
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;To increase the minimum change the zero part of {0,199}&lt;br /&gt;
&lt;br /&gt;
To increase or decrease the maximum change the &amp;quot;199&amp;quot; part of {0,199}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Time validation=&lt;br /&gt;
&lt;br /&gt;
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. Currently  (2009/04/06) LimeSurvey (v1.80plus) doesn&#039;t have a Time queston type so instead you can use &amp;quot;short free text&amp;quot; with one of the nine validation regular expressions below:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;The following three validation strings test for 24 hour time (in order of appearences) without seconds, with optional seconds lastly with seconds required.&lt;br /&gt;
&lt;br /&gt;
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/&lt;br /&gt;
&lt;br /&gt;
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/&lt;br /&gt;
&lt;br /&gt;
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/~/pp&amp;lt;span style=&amp;quot;color:pp~The following three match 12 hour time, as above with seconds, optional seconds and with seconds required&lt;br /&gt;
&lt;br /&gt;
/^(?&amp;quot;&amp;gt;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))$/&lt;br /&gt;
&lt;br /&gt;
/^(?: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))$/&lt;br /&gt;
&lt;br /&gt;
/^(?: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))$/~/pp&amp;lt;/span&amp;gt;pp~The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required&lt;br /&gt;
&lt;br /&gt;
/^(?:(?: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])$/&lt;br /&gt;
&lt;br /&gt;
/^(?:(?:00:[0-5][0-9](?&amp;lt;center&amp;gt;[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?&amp;lt;/center&amp;gt;[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?&amp;lt;center&amp;gt;[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?&amp;lt;/center&amp;gt;[0-5][0-9])?)$/&lt;br /&gt;
&lt;br /&gt;
/^(?:(?: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])$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=US States=&lt;br /&gt;
&lt;br /&gt;
To validate for one state use the following (example is Texas):&lt;br /&gt;
*TX uppercase only = &amp;lt;nowiki&amp;gt;/^(TX)$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*tx lowercase only = &amp;lt;nowiki&amp;gt;/^(tx)$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*TX upper or lowercase = &amp;lt;nowiki&amp;gt;/^([T|t][X|x])$/&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Using_regular_expressions&amp;diff=3690</id>
		<title>Using regular expressions</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Using_regular_expressions&amp;diff=3690"/>
		<updated>2009-07-15T07:05:37Z</updated>

		<summary type="html">&lt;p&gt;Evan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
(Perl) Regular Expressions must start and finish with a forward slash (&amp;quot;/&amp;quot;). You can find a good library of regular expressions at http://www.regxlib.net/. These patterns will almost all work if surrounded with the forward slash.&lt;br /&gt;
&lt;br /&gt;
To test your regex you can [http://www.regxlib.net/RETester.aspx use this regex tester].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please add successfully tested regular expressions!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Examples (note that these are all one line):&lt;br /&gt;
&lt;br /&gt;
=Email Validation:=&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Postcodes:=&lt;br /&gt;
&lt;br /&gt;
==Australian Postcodes:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[0-9]{4}/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Canadian Postcodes:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==US Postal Codes:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[0-9]{5}([- /]?[0-9]{4})?$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Phone Numbers=&lt;br /&gt;
&lt;br /&gt;
==US Phone Number:==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This second option will match all phone Canadian and US phone numbers that include non-digit symbols including&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; . ( ) - (space)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to match phone numbers which resemble below.&lt;br /&gt;
*(555)555 5555&lt;br /&gt;
*555.555.5555&lt;br /&gt;
*555 555 5555&lt;br /&gt;
*(555)-555-5555&lt;br /&gt;
*555-555-5555&lt;br /&gt;
*555555555&lt;br /&gt;
&lt;br /&gt;
==Australian Phone Number:==&lt;br /&gt;
&lt;br /&gt;
The following patterns match all various Australian mobile and landline phone numbers including with &amp;quot;+61&amp;quot; country prefix eg:&lt;br /&gt;
*(02) 9123 6535&lt;br /&gt;
*03 1234-5345&lt;br /&gt;
*0412 345 678&lt;br /&gt;
*+61 2 3456 789&lt;br /&gt;
&lt;br /&gt;
But not:&lt;br /&gt;
* 234 3450 234&lt;br /&gt;
*a234 534 3432&lt;br /&gt;
*134567&lt;br /&gt;
*123456789013&lt;br /&gt;
&lt;br /&gt;
Brackets, white space and hypens are ignored.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NOTE: The &#039;PRECICE&#039; versions listed here match against the first four or five didgets in a number to ensure that they are valid Australian numbers.&lt;br /&gt;
&lt;br /&gt;
The &#039;NOT VERY PRECISE&#039; only match against the first and second didgit so may allow invaid numbers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===All Australian phone numbers (mobile and landline - area code required)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^\(?(?:\+?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})$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===All Australian phone numbers (landlines only - area code required)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^\(?(?:\+?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}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===New South Wales landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Victorian and Tasmanian landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Queensland landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Australian Mobile phone numbers only===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\+?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}$/&lt;br /&gt;
&lt;br /&gt;
NOT VERY PRECISE&lt;br /&gt;
&lt;br /&gt;
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=German marks (with optional plus or minus)=&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-6]{1}[\+|\-]?$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Age Validation=&lt;br /&gt;
&lt;br /&gt;
===Example: Age 20-99===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/([2-9][0-9])/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example: Age 18-35===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/(1[8-9]|2[0-9]|3[0-5])/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Number validation=&lt;br /&gt;
&lt;br /&gt;
==Numbers from 1 to 99999==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^([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])$/&amp;lt;/nowiki&amp;gt;  &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/&lt;br /&gt;
&lt;br /&gt;
accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but&lt;br /&gt;
&lt;br /&gt;
rejects numbers like 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number validation with optionnal decimal (for price)==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^([1][0-9][0-9]|[1-9][0-9]|[0-9])[[\.)[0-9][0-9])?$/ accepts numbers from 0 to 199, with 2 decimal optionnal&amp;lt;/nowiki&amp;gt;  &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/&lt;br /&gt;
&lt;br /&gt;
 forces two decimal points&lt;br /&gt;
&lt;br /&gt;
 accepts numbers from 1.00 to 999,999,999.00 with an optional comma delimiting thousands/millions&lt;br /&gt;
&lt;br /&gt;
 including all of the following: 1.00, 1,000.00 , 12,345.67 , 12345,02 , 123,456,468.00 , 1234566.00 , 123456789.00&lt;br /&gt;
&lt;br /&gt;
 but not 1,23.00 , 12,3.4 or 1234,43.04&amp;lt;/nowiki&amp;gt;  &amp;lt;nowiki&amp;gt;/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/ same as above but the two decimal points are optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 =Minimum width (set to 3 in this example)=&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;/^.{3,}$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 =US Currency (dollar sign and cents optional)=&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;/^\$?\d+(\.(\d{2}]]?$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Validate score=&lt;br /&gt;
&lt;br /&gt;
==1-10==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-9]{1}$|^10$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==1-100==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/^[1-9]?[0-9]{1}$|^100$/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Text validation=&lt;br /&gt;
&lt;br /&gt;
currently multiple short text doesn&#039;t support minimum or maximum answers. One way around this is to use a long free text type question with a regular expression.&lt;br /&gt;
&lt;br /&gt;
The following test for at least one word per line for at least 3 lines and no more than 10 lines. &amp;lt;nowiki&amp;gt;/(?:[&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+)*)(?:[,.;:?!&amp;amp; \n\r]?(?:\n|\r|\n\r|\r\n)(?:[&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+)*)){2,10}/is&amp;lt;/nowiki&amp;gt;If you wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g. &amp;lt;nowiki&amp;gt;/(?:[&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+){4,})(?:[,.;:?!&amp;amp; \n\r]?(?:\n|\r|\n\r|\r\n)(?:[&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+){4,})){2,10}/is&amp;lt;/nowiki&amp;gt;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&#039;re already matching the first line. &amp;lt;nowiki&amp;gt;/(?:[&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+)*)(?:[,.;:?!&amp;amp; \n\r]?(?:\n|\r|\n\r|\r\n)(?:[&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;,.;:?!&amp;amp; \n\r]+(?: [&amp;lt;/div&amp;gt;,.;:?!&amp;amp; \n\r]+)*)){0,4}/is&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Time validation=&lt;br /&gt;
&lt;br /&gt;
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. Currently  (2009/04/06) LimeSurvey (v1.80plus) doesn&#039;t have a Time queston type so instead you can use &amp;quot;short free text&amp;quot; with one of the nine validation regular expressions below:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;The following three validation strings test for 24 hour time (in order of appearences) without seconds, with optional seconds lastly with seconds required.&lt;br /&gt;
&lt;br /&gt;
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/&lt;br /&gt;
&lt;br /&gt;
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/&lt;br /&gt;
&lt;br /&gt;
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/~/pp&amp;lt;span style=&amp;quot;color:pp~The following three match 12 hour time, as above with seconds, optional seconds and with seconds required&lt;br /&gt;
&lt;br /&gt;
/^(?&amp;quot;&amp;gt;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))$/&lt;br /&gt;
&lt;br /&gt;
/^(?: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))$/&lt;br /&gt;
&lt;br /&gt;
/^(?: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))$/~/pp&amp;lt;/span&amp;gt;pp~The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required&lt;br /&gt;
&lt;br /&gt;
/^(?:(?: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])$/&lt;br /&gt;
&lt;br /&gt;
/^(?:(?:00:[0-5][0-9](?&amp;lt;center&amp;gt;[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?&amp;lt;/center&amp;gt;[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?&amp;lt;center&amp;gt;[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?&amp;lt;/center&amp;gt;[0-5][0-9])?)$/&lt;br /&gt;
&lt;br /&gt;
/^(?:(?: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])$/&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>