Actions

Using regular expressions/es: Difference between revisions

From LimeSurvey Manual

(Created page with "Ejemplo: ¡Edad 18-35 <source lang="html"> /(1[8-9]|2[0-9]|3[0-5])/</source>")
No edit summary
 
(45 intermediate revisions by the same user not shown)
Line 209: Line 209:
<source lang="html"> /(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
Ejemplo: ¡Edad 19-65
<source lang="html">/^(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=  
=Validación de números=  




==Numbers from 1 to 99999==
==Números del 1 al 99999==
<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 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 lang="html"> /^[1-9][0-9]{0,4}$/ hace lo mismo que arriba pero debería ejecutarse un poco más rápido</source>  
<source lang="html">/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster</source>
==Números del 1 al 999, del 1.000 al 999.999 al 999.999.999==
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==
<source lang="html"> /^[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>
Acepta números del 1 al 999, del 1.000 al 999.999 y al 999.999.999 pero
Accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but
rechaza números como 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


==Number validation with optional decimal (for price)==
==Validación de números con decimal opcional (para precio)==
Accepts numbers from 0 to 199, with 2 decimal optional:
Acepta números del 0 al 199, con 2 decimales opcionales:
<source lang="html">/^([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]) ps</source>


==Number validation with thousand separator==
==Validación de números con separador de miles==
Space as separator, no minus
Espacio como separador, sin menos
<source lang="html">/^(?!0)\d{1,3}(\ \d{3})*$/</source>
<source lang="html"> /^(?!0)\d{1,3}(\ \d{3})*$/</source>  
Dot as separator, minus allowed
Punto como separador, se permite menos
<source lang="html">/^-?(?!0)\d{1,3}(\.\d{3})*$/</source>
<source lang="html"> /^-?(?!0)\d{1,3}(\.\d{3})*$/</source>


It forces two decimal points and accepts numbers from 1.00 to 999,999,999.00 with an optional comma delimiting thousands/millions
Fuerza dos puntos decimales y acepta números del 1,00 al 999.999.999,00 con una coma opcional que delimita miles/millones
including all of the following: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00
incluido todo lo siguiente: 1,00, 1.000,00, 12.345,67, 12345,02, 123.456.468,00, 1234566,00, 123 456789.00
but not 1,23.00, 12,3.4 or 1234,43.04
pero no 1 ,23,00, 12,3,4 o 1234,43,04
<source lang="html">/^[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 a lo anterior: fuerza dos puntos decimales pero acepta un "0" antes del separador decimal ",".
Similar to the above: Forces two decimal points but accepts a "0" before decimal separator ",".
<source lang="html"> /[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:
Igual que arriba, pero los dos puntos decimales son opcionales:
<source lang="html">/^[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}) ps</source>


==Month (1-12)==
==Mes (1-12)==


If you want to ask for the month a person was born you can validate the input as follows:
Si deseas preguntar por el mes de nacimiento de una persona puedes validar el ingreso de la siguiente manera:


  <source lang="html">/^[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)=
=Ancho mínimo (establecido en 3 en este ejemplo)=




Line 257: Line 255:




=Currency=
=Moneda=




==US currency (dollar sign and cents optional)==
==Moneda estadounidense (signo de dólar y centavos opcionales)==


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


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


==Swiss price==
==Precio suizo==


A number with two decimal numbers after the decimal point of which the last one is either a 5 or a 0:
Un número con dos números decimales después del punto decimal de los cuales el último es un 5 o un 0:


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




=Validate score=
=Validar puntuación=




Line 286: Line 284:




=Text validation=
=Validación de texto=




The [[Question type - Multiple short text|multiple short text question type]] doesn't support minimum or maximum answers at the moment. One way around this is to use a [[Question type - Long free text|long free text question type]] with a regular expression.
El [[Tipo de pregunta - Texto breve múltiple|tipo de pregunta de texto breve múltiple]] no admite respuestas mínimas ni máximas en este momento. Una forma de evitar esto es utilizar un [[Tipo de pregunta - Texto libre largo|tipo de pregunta de texto libre largo]] con una expresión regular.


The below expression tests for at least one word per line for at least 3 lines and no more than 10 lines:
La siguiente expresión prueba al menos una palabra por línea durante al menos 3 líneas y no más de 10 líneas:


  <source lang="html">/(?:[^,.;:?!& \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}/es</source>


If you want, say five words per line, you could change the first and last star/asterisk to {4,}:
Si desea decir cinco palabras por línea, puede cambiar la primera y la última estrella/asterisco a {4,}:


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


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).
Si desea una o más palabras por línea (entre la línea 1 y la línea 5), puede cambiar el contenido ubicado dentro de las últimas llaves a '''0,4''' (tenga en cuenta que usa 0 porque ya está haciendo coincidir la primera línea).


  <source lang="html">/(?:[^,.;:?!& \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}/es</source>


==Word count==
==Recuento de palabras==


  The following restricts the number of words allowed to a minimum of 1 and a maximum of 200:
  Lo siguiente restringe el número de palabras permitidas a un mínimo de 1 y un máximo de 200:


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


  To increase the minimum change the zero part of {0,199}.
  Para aumentar el mínimo cambie la parte cero de {0,199}.


To increase or decrease the maximum change the "199" part of {0,199}.
Para aumentar o disminuir el máximo, cambie la parte "199" de {0,199}.


=Time validation=
=Validación de tiempo=




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 [[Question type - Date|date question type]] (it can also capture time) you can use the [[Question type - Short free text|short free text question type]] with one of the below validation regular expressions.
Hay varias formas de escribir formatos de hora. Algunas de las opciones posibles son 12 horas o 24 horas, con segundos o sin ellos. Aunque es una opción usar el [[Tipo de pregunta - Fecha|tipo de pregunta de fecha]] (también puede capturar el tiempo), puedes usar el [[Tipo de pregunta - Texto libre corto|tipo de pregunta de texto libre corto]] con uno de las siguientes expresiones regulares de validación.


The following three validation strings test for 24 hour time (in order of appearances) without seconds, with optional seconds lastly with seconds required:
Las siguientes tres cadenas de validación prueban el tiempo de 24 horas (en orden de aparición) sin segundos, con segundos opcionales y por último con segundos requeridos:


<source lang="html">/^(?:[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>
Line 326: Line 324:
<source lang="html">/^(?:[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>


The following three match 12 hour time, as above with seconds, optional seconds and with seconds required:
Los tres siguientes coinciden con el tiempo de 12 horas, como se indicó anteriormente con segundos, segundos opcionales y segundos requeridos:


<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 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 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 lang="html">/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:soy|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 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>


The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required:
Los tres siguientes coinciden con el tiempo de 12 o 24 horas como se indicó anteriormente con segundos, segundos opcionales y segundos requeridos:


<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 lang="html">/^(?:(?:00:[0-5][0-9] (?:soy|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](?[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])? (?:soy|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 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=
=Estados de EE.UU.=




To validate for one state use the following (example is Texas):
Para validar para un estado, utilice lo siguiente (por ejemplo, Texas):
*TX uppercase only: <source lang="html">/^(TX)$/</source>
*TX solo mayúsculas:<source lang="html"> /^(TX)$/</source>  
*tx lowercase only: <source lang="html">/^(tx)$/</source>
*tx solo minúsculas:<source lang="html"> /^(tx)$/</source>  
*TX upper or lowercase: <source lang="html">/^([T|t][X|x])$/</source>
*TX mayúsculas o minúsculas:<source lang="html"> /^([T|t][X|x])$/</source>




=Profanity Filter=
=Filtro de malas palabras=




To filter profanity words from an answer:
Para filtrar palabras blasfemas de una respuesta:


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


Replace "ENTERPROFANITYHERE" with your bad word.
Reemplace "ENTERPROFANITYHERE" con su mala palabra.


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.
\b permitirá pasar palabras como "asesinato" y "hola" si ingresas "culo" o "infierno" como palabra blasfema. Esto también funciona si intentas omitir otras palabras, nombres, etc. de las respuestas.




=Helpful links=
=Enlaces útiles=




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.
Al comienzo de esta sección wiki, le recomendamos que utilice https://regex101.com/ para probar/crear expresiones regulares. También puede utilizar https://www.regextester.com/ para crear expresiones en caso de que no esté satisfecho con la primera opción. Puede utilizar https://extendsclass.com/regex-tester.html para visualizar expresiones regulares.

Latest revision as of 13:05, 11 September 2023

Las expresiones regulares deben comenzar y terminar con una barra diagonal ("/"). Puede encontrar una buena biblioteca de expresiones regulares en http://www.regexlib.net/. Estos patrones casi siempre funcionarán si están rodeados de barras diagonales.

Para probar su expresión regular, puede usar este probador de expresiones regulares.

Template:Nota

  Atención : ¡Tenga en cuenta que todos los ejemplos siguientes están escritos en una línea!



Importante: Expresiones regulares en condiciones

Tenga en cuenta que cuando utilice expresiones regulares en el editor de condiciones, NO incluya la barra diagonal inicial y final.


Validación de correo electrónico

Actualización (12/2018): Dado que hoy en día los nombres de dominio no solo contienen caracteres especiales como "ü", sino que también usan más de 3 caracteres como nombre de dominio como .tech o .company, la siguiente expresión regular de correo electrónico sólo comprueba si "@" y "." existe dentro de la dirección de correo electrónico ingresada.

 
/^.+?@.+?\..+$/

Si desea validar una dirección por línea, en un campo de texto largo de varias líneas:

 
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/

En esta expresión regular obsoleta, el nombre de dominio está limitado a 3 caracteres, lo que no cubre todos los dominios disponibles:

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

Códigos postales

Códigos postales de Australia:

/^[0-9]{4}/

Códigos postales brasileños

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

Códigos postales canadienses

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

códigos postales de EE.UU.

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

Para que el código postal comience con cero, use:

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

Códigos postales del Reino Unido

/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/yo

Tenga en cuenta que esto no es muy exacto y una validación más exacta es mucho más compleja. Por ejemplo, consulte StackOverflow respuesta y Wikipedia para obtener más información. información.

Códigos postales franceses

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/

La expresión anterior es muy precisa y permitirá comprobar si existe o no el Departamento francés (dos primeros dígitos), incluidos los Departamentos y Territorios de Ultramar (DOM-TOM).


Números de teléfono

Números de teléfono de EE.UU.

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

o

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

Esta segunda opción coincidirá con todos los números de teléfono canadienses y estadounidenses que incluyan símbolos que no sean dígitos, incluidos:

. ( ) - (espacio)

Esto le permitirá hacer coincidir números de teléfono que se parecen a continuación:

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

Números de teléfono australianos

Los siguientes patrones coinciden con todos los números de teléfono fijos y móviles de Australia, incluidos los que tienen el prefijo de país "+61":

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

Pero no:

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

Se ignoran los corchetes, los espacios en blanco y los guiones.

Las versiones 'Muy precisas:' que se enumeran aquí coinciden con los primeros cuatro o cinco dígitos de un número para garantizar que sean números australianos válidos.

El parámetro 'No muy preciso:' solo coincide con el primer y segundo dígito, por lo que puede permitir números no válidos.

Todos los números de teléfono australianos (móviles y fijos; se requiere código de área)

Muy preciso:

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

No muy preciso:

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

Todos los números de teléfono australianos (solo teléfonos fijos; se requiere código de área)

Muy preciso:

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

No muy preciso:

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

Números de teléfonos fijos de Nueva Gales del Sur (código de área opcional)

Muy preciso:

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

No muy preciso:

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

Números de teléfonos fijos de Victoria y Tasmania (código de área opcional)

Muy preciso:

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

No muy preciso:

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

Números de teléfonos fijos de Queensland (código de área opcional)

Muy preciso:

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

No muy preciso:

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

Números de teléfonos fijos de Australia del Sur, Territorio del Norte y Australia Occidental (código de área opcional)

Muy preciso:

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

No muy preciso:

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

Solo números de teléfonos móviles australianos

Muy preciso:

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

No muy preciso:

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

Número de teléfono belga

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

Número de teléfono móvil belga

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

Número de teléfono francés

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

Número de teléfono móvil francés

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

Número de teléfono de Luxemburgo

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

Número de teléfono móvil de Luxemburgo

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

Marcos alemanes (con más o menos opcional)

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


Validación de edad

Ejemplo: ¡Edad 20-99

 /([2-9][0-9])/

Ejemplo: ¡Edad 18-35

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

Ejemplo: ¡Edad 19-65

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


Validación de números

Números del 1 al 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}$/ hace lo mismo que arriba pero debería ejecutarse un poco más rápido

Números del 1 al 999, del 1.000 al 999.999 al 999.999.999

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

Acepta números del 1 al 999, del 1.000 al 999.999 y al 999.999.999 pero rechaza números como 999.1.1, 94.22.22, 999.1.22, 999.11.1, 999.1.333

Validación de números con decimal opcional (para precio)

Acepta números del 0 al 199, con 2 decimales opcionales:

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

Validación de números con separador de miles

Espacio como separador, sin menos

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

Punto como separador, se permite menos

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

Fuerza dos puntos decimales y acepta números del 1,00 al 999.999.999,00 con una coma opcional que delimita miles/millones incluido todo lo siguiente: 1,00, 1.000,00, 12.345,67, 12345,02, 123.456.468,00, 1234566,00, 123 456789.00 pero no 1 ,23,00, 12,3,4 o 1234,43,04

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

Similar a lo anterior: fuerza dos puntos decimales pero acepta un "0" antes del separador decimal ",".

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

Igual que arriba, pero los dos puntos decimales son opcionales:

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

Mes (1-12)

Si deseas preguntar por el mes de nacimiento de una persona puedes validar el ingreso de la siguiente manera:

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

Ancho mínimo (establecido en 3 en este ejemplo)

/^.{3,}$/


Moneda

Moneda estadounidense (signo de dólar y centavos opcionales)

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

Compruebe el uso de comas:

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

Precio suizo

Un número con dos números decimales después del punto decimal de los cuales el último es un 5 o un 0:

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


Validar puntuación

1-10

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

1-100

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


Validación de texto

El tipo de pregunta de texto breve múltiple no admite respuestas mínimas ni máximas en este momento. Una forma de evitar esto es utilizar un tipo de pregunta de texto libre largo con una expresión regular.

La siguiente expresión prueba al menos una palabra por línea durante al menos 3 líneas y no más de 10 líneas:

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

Si desea decir cinco palabras por línea, puede cambiar la primera y la última estrella/asterisco a {4,}:

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

Si desea una o más palabras por línea (entre la línea 1 y la línea 5), puede cambiar el contenido ubicado dentro de las últimas llaves a 0,4 (tenga en cuenta que usa 0 porque ya está haciendo coincidir la primera línea).

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

Recuento de palabras

Lo siguiente restringe el número de palabras permitidas a un mínimo de 1 y un máximo de 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Para aumentar el mínimo cambie la parte cero de {0,199}.

Para aumentar o disminuir el máximo, cambie la parte "199" de {0,199}.

Validación de tiempo

Hay varias formas de escribir formatos de hora. Algunas de las opciones posibles son 12 horas o 24 horas, con segundos o sin ellos. Aunque es una opción usar el tipo de pregunta de fecha (también puede capturar el tiempo), puedes usar el tipo de pregunta de texto libre corto con uno de las siguientes expresiones regulares de validación.

Las siguientes tres cadenas de validación prueban el tiempo de 24 horas (en orden de aparición) sin segundos, con segundos opcionales y por último con segundos requeridos:

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

Los tres siguientes coinciden con el tiempo de 12 horas, como se indicó anteriormente con segundos, segundos opcionales y segundos requeridos:

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

Los tres siguientes coinciden con el tiempo de 12 o 24 horas como se indicó anteriormente con segundos, segundos opcionales y segundos requeridos:

/^(?:(?:00:[0-5][0-9] (?:soy|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])? (?:soy|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])$/

Estados de EE.UU.

Para validar para un estado, utilice lo siguiente (por ejemplo, Texas):

  • TX solo mayúsculas:
     /^(TX)$/
    
  • tx solo minúsculas:
     /^(tx)$/
    
  • TX mayúsculas o minúsculas:
     /^([T|t][X|x])$/
    


Filtro de malas palabras

Para filtrar palabras blasfemas de una respuesta:

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

Reemplace "ENTERPROFANITYHERE" con su mala palabra.

\b permitirá pasar palabras como "asesinato" y "hola" si ingresas "culo" o "infierno" como palabra blasfema. Esto también funciona si intentas omitir otras palabras, nombres, etc. de las respuestas.


Enlaces útiles

Al comienzo de esta sección wiki, le recomendamos que utilice https://regex101.com/ para probar/crear expresiones regulares. También puede utilizar https://www.regextester.com/ para crear expresiones en caso de que no esté satisfecho con la primera opción. Puede utilizar https://extendsclass.com/regex-tester.html para visualizar expresiones regulares.