JSLint “insicuro ^” nell’espressione regolare

JSLint riporta Insecure “^” per la seguente riga. Perché? O si lamenterà ogni volta che voglio negare una class di personaggi?

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

Lo farà solo se hai l’opzione selezionata in basso:

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

Dai documenti :

vero se. e [^ …] non dovrebbe essere consentito nei valori letterali di RegExp. Questi moduli non dovrebbero essere utilizzati durante la convalida in applicazioni sicure.

Quindi rispondi alla tua domanda, se inizi una regex con ^ e viene spuntata, sì, ogni volta viene generato l’errore. Il problema è con i caratteri unicode, stai permettendo praticamente qualsiasi cosa lì dentro e c’è il potenziale per problemi di sicurezza, o problemi di esclusione di validazione. Invece di disabilitare qualcosa (che può essere bypassato), consenti solo quali caratteri sono validi.

regexp: true

nelle tue opzioni di lanugine, permetterà

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

puoi configurare le regole che vorresti usare qui

http://www.jslint.com/

Prendi in considerazione l’utilizzo di \W invece di /^\w/

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

Per il tuo caso particolare questo non funzionerebbe perché vuoi lasciare caratteri virgola e trattino, ma penso che sia degno di nota.