Hilo oficial: Solicitudes de Expresiones Regulares

<< < (2/6) > >>

WHK:
Acá te lo dejo funcionando:
https://jsfiddle.net/0xm8vcvw/

Recuerda que la expresión regular puede hacer match en uno o mas regultados dentro del mismo string por lo cual debes comparar que el primer match sea igual a tu texto completo para saber si es verdadero o no.

Saludos.

Pablo Videla:
Que raro, copie exacto tu cambio y me sigue respondiendo "nop", que podría ser?

Probe tus ejemplos y me lo toma invalido. (Gracias por las recomendaciones, siempre trabajo con utf8 solo que esto es un PoC )

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.


Tomare tu ultimo ejemplo no lo habia leido, gracias!

WHK:
Mira esto: https://jsfiddle.net/0xm8vcvw/5/

He modificado la expresión regular para que cada nombre y apellido deba contener por lo menos 3 carácteres hasta 15, así la validación es mayor y previenes la validación de textos como "Pablo el loco", también agregué la concatenación "de las" y "las" para validar nombres como por ejemplo "Pablo de las mercedes" o "Pablo las casas":

Código:

/([a-zñÑáéíóúÁÉÍÓÚ]{3,15}\s+((de\s+la|de\s+las|de|las)\s+)*[a-zñÑáéíóúÁÉÍÓÚ]{3,15}(\s+)*([a-zñÑáéíóúÁÉÍÓÚ]{3,15})*)/i

Pablo Videla:
Ahi me funciona, disculpa la demora se me habia estropeado el cargador  :xD es cosa de agregar mas palabras, es capaz de detectar el apellido compuesto en el lugar del materno en vez del paterno?

WHK:
Pues es mas dificil a menos que cambies el orden pero tendras que adivinar o tener un diccionario de nombres y apellidos.

Acá les dejo un repositorio muy bueno sobre expresiones regulares y validaciones:
https://www.owasp.org/index.php/OWASP_Validation_Regex_Repository


Citar

Note
    These Regexs are examples and not built for a particular Regex engine. However, the PCRE syntax is mainly used. In particular, this means that character classes do not contain meta characters which need to be escaped, except the - and ] character, where it is assumed that a - needs not to be escaped only when it is the last character in a character class. The character class supports shortcut notations for other character classes like \s or \w which should not be used as they depend on the LOCALE environment setting in most systems.

Please carefully test the regex in your regex engine.

Código
<?xml version="1.0"?>
 
 <regex>
  <name>url</name>
  <pattern><![CDATA[^((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][[:blank:]])?$]]></pattern>
  <description>A valid URL per the URL spec.</description>
 </regex>
 
 <regex>
  <name>IP</name>
  <pattern><![CDATA[^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$]]></pattern>
  <description>A valid IP Address</description>
 </regex>
 
 <regex>
  <name>e-mail</name>
  <pattern><![CDATA[^[a-zA-Z0-9+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$]]></pattern>
  <description>A valid e-mail address</description>
 </regex>
 
 <regex>
  <name>safetext</name>
  <pattern><![CDATA[^[a-zA-Z0-9 .-]+$]]></pattern>
  <description>Lower and upper case letters and all digits</description>
 </regex>
 
 <regex>
  <name>date</name>
  <pattern><![CDATA[^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$]]></pattern>
  <description>Date in US format with support for leap years</description>
 </regex>
 
 <regex>
  <name>creditcard</name>
  <pattern><![CDATA[^((4\d{3})|(5[1-5]\d{2})|(6011)|(7\d{3}))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$]]></pattern>
  <description>A valid credit card number</description>
 </regex>
 
 <regex>
  <name>password</name>
  <pattern><![CDATA[^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$]]></pattern>
  <description>4 to 8 character password requiring numbers and both lowercase and uppercase letters</description>
 </regex>
 
 <regex>
  <name>complexpassword</name>
  <pattern><![CDATA[^(?:(?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})[A-Za-z0-9!~<>,;:_=?*+#."&§%°()\|\[\]\-\$\^\@\/]{8,32}$]]></pattern>
  <description>4 to 32 character password requiring at least 3 out 4 (uppercase and lowercase letters, numbers and special characters) and no more than 2 equal characters in a row</description>
 </regex>
 
 <regex>
  <name>English_digitwords</name>
  <pattern><![CDATA[^(zero|one|two|three|four|five|six|seven|eight|nine)$]]></pattern>
  <description>The English words representing the digits 0 to 9</description>
 </regex>
 
 <regex>
  <name>English_daywords</name>
  <pattern><![CDATA[^(Mo|Tu|We|Th|Fr|Sa|Su)$]]></pattern>
  <description>English 2 character abbreviations for the days of the week</description>
 </regex>
 
 <regex>
  <name>English_monthwords</name>
  <pattern><![CDATA[^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$]]></pattern>
  <description>English 3 character abbreviations for the months</description>
 </regex>
 
 <regex>
  <name>French_digitwords</name>
  <pattern><![CDATA[^(z[eé]ro|un|deux|trois|quatre|cinq|six|sept|huit|neuf)$]]></pattern>
  <description>The French words representing the digits 0 to 9</description>
 </regex>
 
 <regex>
  <name>German_digitwords</name>
  <pattern><![CDATA[^(null|eins|zwei|drei|vier|f(ue|ü)nf|sechs|sieben|acht|neun)$]]></pattern>
  <description>The German words representing the digits 0 to 9</description>
 </regex>
 
 <regex>
  <name>Spanish_digitwords</name>
  <pattern><![CDATA[^(cero|uno|dos|tres|cuatro|cinco|seis|siete|ocho|nueve)$]]></pattern>
  <description>The Spanish words representing the digits 0 to 9</description>
 </regex>
 
 <regex>
  <name>US_zip</name>
  <pattern><![CDATA[^\d{5}(-\d{4})?$]]></pattern>
  <description>US zip code with optional dash-four</description>
 </regex>
 
 <regex>
  <name>US_phone</name>
  <pattern><![CDATA[^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$]]></pattern>
  <description>US phone number with or without dashes</description>
 </regex>
 
 <regex>
  <name>US_state</name>
  <pattern><![CDATA[^(AE|AL|AK|AP|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MP|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY)$]]></pattern>
  <description>2 letter U.S. state abbreviations</description>
 </regex>
 
 <regex>
  <name>US_ssn</name>
  <pattern><![CDATA[^\d{3}-\d{2}-\d{4}$]]></pattern>
  <description>9 digit U.S. social security number with dashes</description>
 </regex>
 
 <!-- Some additional examples that have not been vetted
 
      // HTML HEX CODE   ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$
      // FLOATING POINT   ^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$
      // PERSON NAME   ^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$
      // MAC ADDRESS  ^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$
      // GUID    ^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$
      // IP ADDRESS  ^\b((25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\b$
      // IP ADDRESS (^\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b$
      // REASONABLE DOMAIN NAME   ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
      // RFC 1918 NON ROUTABLE IP   ^(((25[0-5]|2[0-4][0-9]|19[0-1]|19[3-9]|18[0-9]|17[0-1]|17[3-9]|1[0-6][0-9]|1[1-9]|[2-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|(192\.(25[0-5]|2[0-4][0-9]|16[0-7]|169|1[0-5][0-9]|1[7-9][0-9]|[1-9][0-9]|[0-9]))|(172\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|1[0-5]|3[2-9]|[4-9][0-9]|[0-9])))\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
      // VALID WINDOWS FILENAME  ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\";|/]+$
      //
      //
      // Warning, per http://en.wikipedia.org/wiki/ReDoS the Java Classname RegEx below is vulnerable to RegExDos
      // Java Classname  ^(([a-z])+.)+[A-Z]([a-z])+$
      //
      //  ANY PLATFORM FILENAME   ^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:*?"|<>. ](([^\\/:*?"|<>. ])|([^\\/:*?"|<>]*[^\\/:*?"|<>. ]))?))\\)*[^\\/:*?"|<>. ](([^\\/:*?"|<>. ])|([^\\/:*?"|<>]*[^\\/:*?"|<>. ]))?$
 -->
 

Yo uso muchos de ellos en mis desarrollos.

Saludos.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior