2010-06-14 17 views

Respuesta

8

[^\s;|\\*'"!,()<>] coincide con cualquier carácter ASCII distintas de las enumeradas, y cualquier carácter no ASCII. Dado que las cadenas de JavaScript son conscientes de Unicode, eso significa que todos los caracteres conocidos Unicode. Puedo ver un gran potencial de travesuras.

En lugar de deshabilitar la advertencia, reescribiría la clase de personaje para que coincida con el caracteres que haces quieren permitir, ya que esta expresión regular de la Regular Expressions Cookbook hace:

/\bhttps?:\/\/[-\w+&@#/%?=~|$!:,.;]*[\w+&@#/%=~|$]/g 
5

(responder a mi propia pregunta) que hice algo de investigación ... documentación JSLint dice:

Inhabilitarlo inseguro. y [^ ...]. en/RegExp/regexp: verdadero si. y [^ ...] no debería permitirse en los literales RegExp. Estos formularios no deben usarse al validar en aplicaciones seguras.

Lo que he hecho es desactivar el error JSLint para la línea en cuestión (ya que no estoy tratando con la necesidad de estar a salvo de la entrada del usuario potencialmente malicioso:

/*jslint regexp: false*/ 
.... Javascript statement(s) .... 
/*jslint regexp: true*/ 
+1

realidad he cambiado de código para utilizar la sugerencia de Alan anteriormente, como la expresión regular es riguroso . – Zhami

+1

En realidad, necesita cambiar las líneas. Es regexp: true y regexp: falso –

0

que puedes usar:

/*jslint regexp: true*/ 
linkRgx = /https?:\/\/[^\s;|\\*'"!,()<>]+/g; 
/*jslint regexp: false*/ 
+0

¿Puedes explicar tu respuesta? ¿Qué hace esa línea de comentario desactivar/habilitar y por qué es necesaria en este caso? – Marki555

+0

Para suprimir el error de pelusa informado – felipekm

Cuestiones relacionadas