validar validacion telefono regulares numeros numero numericos nombre formularios formulario expresiones especiales ejemplos con caracteres campos javascript regex diacritics

javascript - validacion - Probar si la cadena contiene solo letras(az+é ü ö ê å ø, etc.)



validar numero de telefono javascript (12)

Cuando intenté implementar la solución de @ Debilski, a JavaScript no le gustaron los caracteres latinos extendidos, tuve que codificarlos para que JavaScript se escape:

// The huge unicode escape string is equal to ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦ // ĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎ // ƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊ // IJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñ // ņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭ // ŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ function isAlpha(string) { var patt = /^[a-zA-Z/u00C6/u00D0/u018E/u018F/u0190/u0194/u0132/u014A/u0152/u1E9E/u00DE/u01F7/u021C/u00E6/u00F0/u01DD/u0259/u025B/u0263/u0133/u014B/u0153/u0138/u017F/u00DF/u00FE/u01BF/u021D/u0104/u0181/u00C7/u0110/u018A/u0118/u0126/u012E/u0198/u0141/u00D8/u01A0/u015E/u0218/u0162/u021A/u0166/u0172/u01AFY/u0328/u01B3/u0105/u0253/u00E7/u0111/u0257/u0119/u0127/u012F/u0199/u0142/u00F8/u01A1/u015F/u0219/u0163/u021B/u0167/u0173/u01B0y/u0328/u01B4/u00C1/u00C0/u00C2/u00C4/u01CD/u0102/u0100/u00C3/u00C5/u01FA/u0104/u00C6/u01FC/u01E2/u0181/u0106/u010A/u0108/u010C/u00C7/u010E/u1E0C/u0110/u018A/u00D0/u00C9/u00C8/u0116/u00CA/u00CB/u011A/u0114/u0112/u0118/u1EB8/u018E/u018F/u0190/u0120/u011C/u01E6/u011E/u0122/u0194/u00E1/u00E0/u00E2/u00E4/u01CE/u0103/u0101/u00E3/u00E5/u01FB/u0105/u00E6/u01FD/u01E3/u0253/u0107/u010B/u0109/u010D/u00E7/u010F/u1E0D/u0111/u0257/u00F0/u00E9/u00E8/u0117/u00EA/u00EB/u011B/u0115/u0113/u0119/u1EB9/u01DD/u0259/u025B/u0121/u011D/u01E7/u011F/u0123/u0263/u0124/u1E24/u0126I/u00CD/u00CC/u0130/u00CE/u00CF/u01CF/u012C/u012A/u0128/u012E/u1ECA/u0132/u0134/u0136/u0198/u0139/u013B/u0141/u013D/u013F/u02BCN/u0143N/u0308/u0147/u00D1/u0145/u014A/u00D3/u00D2/u00D4/u00D6/u01D1/u014E/u014C/u00D5/u0150/u1ECC/u00D8/u01FE/u01A0/u0152/u0125/u1E25/u0127/u0131/u00ED/u00ECi/u00EE/u00EF/u01D0/u012D/u012B/u0129/u012F/u1ECB/u0133/u0135/u0137/u0199/u0138/u013A/u013C/u0142/u013E/u0140/u0149/u0144n/u0308/u0148/u00F1/u0146/u014B/u00F3/u00F2/u00F4/u00F6/u01D2/u014F/u014D/u00F5/u0151/u1ECD/u00F8/u01FF/u01A1/u0153/u0154/u0158/u0156/u015A/u015C/u0160/u015E/u0218/u1E62/u1E9E/u0164/u0162/u1E6C/u0166/u00DE/u00DA/u00D9/u00DB/u00DC/u01D3/u016C/u016A/u0168/u0170/u016E/u0172/u1EE4/u01AF/u1E82/u1E80/u0174/u1E84/u01F7/u00DD/u1EF2/u0176/u0178/u0232/u1EF8/u01B3/u0179/u017B/u017D/u1E92/u0155/u0159/u0157/u017F/u015B/u015D/u0161/u015F/u0219/u1E63/u00DF/u0165/u0163/u1E6D/u0167/u00FE/u00FA/u00F9/u00FB/u00FC/u01D4/u016D/u016B/u0169/u0171/u016F/u0173/u1EE5/u01B0/u1E83/u1E81/u0175/u1E85/u01BF/u00FD/u1EF3/u0177/u00FF/u0233/u1EF9/u01B4/u017A/u017C/u017E/u1E93]+$/; return patt.test(string); }

Quiero hacer coincidir una cadena para asegurarme de que contiene solo letras.

Tengo esto y funciona bien

var onlyLetters = /^[a-zA-Z]*$/.test(myString);

PERO

Ya que también hablo otro idioma, debo permitir todas las letras, no solo AZ. También por ejemplo:

é ü ö ê å ø

¿Alguien sabe si hay un término global ''alpha'' que incluye todas las letras para usar con regExp? O incluso mejor, ¿alguien tiene algún tipo de solución?

Muchas gracias

EDIT: Acabo de darse cuenta de que también puede permitir "-" y "en caso de un nombre doble como:" Mary-Ann "o" Mary Ann "


Debería haber, pero la expresión regular dependerá de la localización. Por lo tanto, é ü ö ê å ø no se filtrará si estás en una localización de EE. UU., Por ejemplo. Para asegurarse de que su sitio web haga lo que usted desea en todas las localizaciones, debe escribir explícitamente los caracteres en una forma similar a la que ya está haciendo.

El único estándar que conozco es /w , que coincidiría con todos los caracteres alfanuméricos. Puede hacerlo de la manera "estándar" ejecutando dos expresiones regulares, una para verificar /w coincidencias y otra para verificar que /d (todos los dígitos) no coinciden, lo que daría como resultado una cadena de alfa solo garantizada. De nuevo, le insto encarecidamente a que no utilice esta técnica, ya que no hay garantía de lo que representará /w en una ubicación determinada, pero esto responde a su pregunta.


Esto puede ser complicado, desafortunadamente JavaScript tiene un soporte bastante pobre para la internacionalización. Para hacer esto, deberás crear tu propia clase de personaje. Esto se debe a que, por ejemplo, /w es lo mismo que [0-9A-Z_a-z] que no te ayudará mucho y no hay nada como [[:alpha:]] en Javascript. Pero como parece que solo vas a usar otro idioma, probablemente puedas agregar esos otros personajes a tu clase de personaje.

Por cierto, creo que necesitarás un ? o * en su expresión regular allí si myString puede tener más de un carácter.

El ejemplo completo,

/^[a-zA-Zéüöêåø]*$/.test(myString);


Estoy usando un convertidor antes de verificar, pero aún no es amigable para todos los idiomas. No estoy seguro de que sea posible.

function noExtendedChars( input_name ){ var whitelist = [ [''a'', ''à'',''á'',''â'',''ä'',''æ'',''ã'',''å'',''ā''], [''c'', ''ç'', ''ć'', ''č''], [''e'', ''è'',''é'',''ê'',''ë'',''ē'',''ė'',''ę''], [''i'', ''ï'',''ï'',''í'',''ī'',''į'',''î''], [''l'', ''ł''], [''n'', ''ñ'', ''ń''], [''o'', ''ô'', ''ö'', ''ò'', ''ó'', ''œ'', ''ø'', ''ō'', ''õ'' ], [''s'', ''ß'', ''ś'', ''š'' ], [''u'', ''û'', ''ü'', ''ù'', ''ú'', ''ū''], [''y'', ''ÿ''], [''z'', ''ž'', ''ź'', ''ż''] ]; for( b=0; b < blacklist.length; b++ ){ var r= blacklist[b]; for ( a=1; a < r.length; a++ ){ input_name = input_name.replace( new RegExp( r[a], "gi") , r[0]); } } return input_name; }


Hay algunos accesos directos para lograr esto en otros dialectos de expresiones regulares - vea esta página . Pero no creo que haya alguno estandarizado en JavaScript, ciertamente no será compatible con todos los navegadores.


No puedes hacer esto en JS. Tiene un soporte de expresiones regulares y normalizador muy limitado. Necesitaría construir una matriz de caracteres larga e imposible de mantener con todos los caracteres latinos posibles con signos diacríticos (supongo que hay alrededor de 500 diferentes). Más bien, delegue la tarea de validación en el lado del servidor, que utiliza otro idioma con más capacidades de expresiones regulares, si es necesario con la ayuda de ajax.

En un entorno completo de expresiones regulares, puede probar si la cadena coincide con /p{L}+ . Aquí hay un ejemplo de Java :

boolean valid = string.matches("//p{L}+");

Alternativamente, también puede normalizar el texto para eliminar las marcas diacríticas y verificar si contiene [A-Za-z]+ solamente. Aquí está otra vez un ejemplo de Java :

string = Normalizer.normalize(string, Form.NFD).replaceAll("//p{InCombiningDiacriticalMarks}+", ""); boolean valid = string.matches("[A-Za-z]+");

PHP soporta funciones similares.


No sé la razón real para hacer esto, pero si desea usarlo como una verificación previa para, digamos, nombres de inicio de sesión o apodos de usuario, le sugiero que ingrese los caracteres usted mismo y no use todo Los caracteres ''alfa'' los encontrarás en Unicode, porque probablemente no encuentres una diferencia óptica en las siguientes letras:

А ≠ A ≠ Α # cyrillic, latin, greek

En tales casos, es mejor especificar las letras permitidas manualmente si desea minimizar la falsificación de cuentas y demás.

Adición

Bueno, si es para un campo que se supone que no es único, también permitiría el griego. No me sentiría bien cuando fuerzo a los usuarios a cambiar su nombre a una versión latinizada.

Pero para campos únicos como apodos, debe dar a sus otros visitantes del sitio una pista, que es realmente el apodo que creen que es. Ya es bastante malo que la gente falsifique cuentas intercambiando I y I ya. Por supuesto, es algo que depende de tus usuarios; pero para estar seguro, creo que es mejor permitir solo los signos básicos + latinos. (Tal vez eche un vistazo a esta lista: Latin-derived_alphabet )

Como una sugerencia no probada (con ''-'', ''_'' y ''''):

/^[a-zA-Z/-_ ’''‘ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ]$/.test(myString)

Otra edición: he agregado el apóstrofe para personas con nombres como O''Neill o O''Reilly. (Y el apóstrofe recto y revertido para las personas que no pueden entrar en el rizado correctamente).


No sé nada sobre Javascript, pero si tiene el soporte de Unicode adecuado, convierta su cadena a una forma descompuesta, luego elimine los [/u0300-/u036f/u1dc0-/u1dff] diacríticos ( [/u0300-/u036f/u1dc0-/u1dff] ). Entonces tus cartas solo serán ASCII.


Podría usar una lista negra, una lista de caracteres para excluir.

Además, es importante verificar la entrada en el lado del servidor, ¡no solo en el lado del cliente! El lado del cliente se puede omitir fácilmente.


Siempre se puede utilizar una lista negra en lugar de una lista blanca. De esa forma solo eliminas los caracteres que no necesites.


var onlyLetters = /^[a-zA-Z/u00C0-/u00ff]+$/.test(myString)


var regexp = //B/#[a-zA-Z/x7f-/xff]+/g; var result = searchText.match(regexp);