2013-07-16 5 views
2

J'ai l'expression régulière suivante dans JQuery. Cela revient toujours vrai.L'expression régulière renvoie toujours vrai

var reg = new RegExp("[a-zA-Z0-9 ,]+"); 
var key = $('#keyId').val().trim(); 
if (key.match(reg)) { 
    $("#TitleError").hide(); 
} 
else { 
    $("#TitleError").text("special characters not allowed!!").show(); 

} 

Il retourne vrai pour tout, par exemple "ABCD,^& & &^&" devrait être faux, il retourne vrai.

+1

* "J'ai l'expression régulière suivante dans JQuery" * jQuery n'a absolument rien à voir avec les expressions régulières. jQuery est une bibliothèque de fonctions. * JavaScript * est un langage avec, entre autres choses, des expressions régulières. –

Répondre

4

match renvoie les correspondances trouvées dans la chaîne. ce que vous voulez vraiment est test par exemple. comme ceci

/^[a-zA-Z0-9 ,]+$/.test(key) 
or 
reg.test(key) 
+0

Merci Shyam. Y a-t-il une correspondance de scénario qui échoue? Je pense que ça fait la même chose? – TBA

+1

Les '^' et '$' sont importants ici, ce qui signifie que toute la chaîne doit correspondre à l'expression. '' "ABCD,^&&&^&" 'a des caractères qui correspondent à la regex donc, ils seront retournés. Si l'entrée n'en a pas, par exemple. comme '"^&&&^& "' 'match' renverra' null' ce qui échouera au test booléen – shyam

+0

Merci Shyam :) – TBA

2

Vous regexp devrait être:

var reg = new RegExp('^[a-zA-Z0-9 ,]+$');

+0

Merci j'ai raté le $ !! – TBA

+1

Aussi j'utilisais Match au lieu de test comme @shyam dit :) – TBA