2010-06-14 9 views

Odpowiedz

8

[^\s;|\\*'"!,()<>] dopasowuje dowolny znak ASCII innych niż te, które są na liście, i każdy znak spoza ASCII. Ponieważ ciągi JavaScript są w standardzie Unicode, oznacza to każdy znak znany z Unicode, widzę w tym potencjalny problem:

Zamiast wyłączać ostrzeżenie, przepisałby klasę znaków, aby pasowała do znaków zrobić chcą pozwolić, jak to regex z Regular Expressions Cookbook robi:

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

(odpowiadając na moje własne pytanie) zrobiłem kilka kopanie ... mówi:

Disallow niepewna. i [^ ...]. in/RegExp/regexp: true, jeśli. i [^ ...] nie powinno być dozwolone w literałach RegExp. Formularzy tych nie należy używać podczas sprawdzania poprawności w bezpiecznych aplikacjach.

Co mam zrobić, to wyłączyć błąd JSLint dla linii naruszającego (jak nie mam do czynienia z konieczności być zabezpieczone przed potencjalnie szkodliwym wejściowych użytkownika:

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

I faktycznie zmieniło mojego kodu używać sugestie Alana powyżej, jako że regex jest rygorystyczny . – Zhami

+1

Właściwie musisz zmienić linie. To wyrażenie regularne: prawda, a następnie wyrażenie regularne: fałsz –

0

Należy użyć:

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

Czy możesz wyjaśnić swoją odpowiedź? Co ta linia komentarza wyłącza/włącza i dlaczego jest potrzebna w tym przypadku? – Marki555

+0

Aby pominąć zgłoszony błąd kłaczki – felipekm