43 votes

JSLint "insecure ^" dans une expression régulière

Rapports JSLint Insecure '^' pour la ligne suivante. Pourquoi cela ? Ou est-ce qu'il va se plaindre chaque fois que je veux annuler une classe de personnage ?

// remove all non alphanumeric, comma and dash characters
"!$7s-gd,&j5d-a#".replace(/[^\w,\-]/g, '');

38voto

Nick Craver Points 313913

Il ne le fera que si vous avez sélectionné l'option en bas de la page :

Disallow insecure . and [^...] in /RegExp/

De les docs :

true if . et [^...] ne doivent pas être autorisés dans les littéraux RegExp. Ces formes ne doivent pas être utilisées lors de la validation dans des applications sécurisées.

Donc pour répondre à votre question, si vous commencez une regex avec ^ et qu'elle est cochée, oui, l'erreur se produira à chaque fois. Le problème, c'est qu'avec les caractères unicodes, vous autorisez à peu près n'importe quoi et il y a un risque potentiel de problèmes de sécurité ou de contournement de la validation. Au lieu de interdire l'accès à quelque chose (qui peut être contourné), permettre seulement les caractères qui sont valides.

6voto

David Morrow Points 1162

regexp: true

dans vos options lint, permettra à

. and [^...] in /RegExp/

vous pouvez configurer les règles que vous souhaitez utiliser ici

http://www.jslint.com/

0voto

dugokontov Points 959

Envisagez d'utiliser \W au lieu de /^\w/

"!$7s-gd,&j5d-a#".replace(/\W/g, '');

Dans votre cas particulier, cela ne fonctionnerait pas car vous voulez laisser les caractères virgule et tiret, mais je pense que cela vaut la peine d'être mentionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X