2010-09-06 24 views
5

Cómo poner una validación sobre un campo que no permitiría solo caracteres especiales, es decir, AB#,[email protected],@#ASD está permitido pero @#$^& o # no está permitido. Necesito el RegEx para esta validación.¿Cómo usar la expresión regular para verificar que la entrada del usuario no esté compuesta únicamente por caracteres especiales?

+2

esto no tiene nada que ver con jQuery, ¿quieres decir javascript? –

+5

Nono ... JavaScript ha cambiado de nombre a jQuery, didntchya know? – mpen

+0

@OP: es posible que desee echar un vistazo a http://bassistance.de/jquery-plugins/jquery-plugin-validation/ y http: // stackoverflow.com/questions/280759/jquery-validate-how-to-add-a-rule-for-regular-expression-validation – mpen

Respuesta

9
str.match(/^[A-Z#@,]+$/) 

coincidirá con una cadena que ...

  • ... comienza y termina ^$ con el patrón cerrado
  • ... contiene ningún letras mayúsculas A-Z (no coincidirá con menor mayúsculas y minúsculas)
  • ... contiene solo los caracteres especiales #, @ y ,
  • ... tiene al menos 1 carácter (sin cadena vacía)

Por entre mayúsculas y minúsculas, puede agregar i al final: (i.g. /pattern/i)

** ** ACTUALIZACIÓN

Si necesita para validar si el campo contiene caracteres especiales sólo, se puede comprobar si la cadena contiene sólo caracteres que no son palabras o números:

if (str.match(/^[^A-Z0-9]*$/i)) { 
    alert('Invalid'); 
} else { 
    alert('Valid'); 
} 

Esto coincidirá con una cadena que contiene solo caracteres no alfanuméricos. Una cadena vacía tampoco será válida. Reemplace * con + para permitir que las cadenas vacías sean válidas.

+0

Creo que no te hice entender, punto es que hay demasiados caracteres especiales y lo que escribió anteriormente son solo las instancias ["AB #, A89 @, @ # ASD está permitido pero @ # $^y/o # no está permitido"]. Puede ser de cualquier combinación como A * B, AB *, * Ab pero no debe haber solo caracteres especiales. La única forma de usar caracteres especiales en ese campo en particular es asociar el carácter especial con cualquier dígito [eg-9()] o con cualquier carácter. ¿Qué hacer? – Arko

+0

sí javascript .. – Arko

2

Si puede usar una "coincidencia negativa" para su validación, yo. mi. la entrada está bien si la expresión regular hace no partido, entonces sugiero

^\W*$ 

Esto coincidirá con una cadena que consta únicamente de caracteres que no son de texto (o la cadena vacía).

Si necesita un resultado positivo, a continuación, utilizar

^\W*\w.*$ 

Esto coincide si hay al menos un carácter alfanumérico en la cadena.

0

Creo que lo que estás buscando es algo como esto:

!str.match(/^[@#$^&]*$/) 

Cheques de que la cadena no contienen sólo símbolos, es decir, que contiene al menos un carácter que ISN' t un símbolo.

Cuestiones relacionadas