2013-01-17 2 views
2

Можно создать дубликат:
Is there a way to make JSLint happy with this regex?JShint '^' ошибка Unescaped для Javascript Match Regex

Я просто убирали мой код, используя JShint и его вырвет ошибку для этой части кода.

if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/)) { 
     score++; 
    } 

Ошибка Unescaped '^'.

В основном я хочу, чтобы дать больше очков для более сложного пароля?

+3

Почему у вас есть все эти запятые? – Mathletics

+0

JSLINT прав, вам нужно избежать знака ^,^означает, что нет в регулярном выражении или в начале предложения, если не в блоке [] –

+0

@Mathletics Я думал, что должен был запятнать каждый символ, который я предполагаю, что я не? : D – chris

ответ

5

В регулярном выражении установлен ^ символ означает NOT, поэтому по какой-то причине (возможно, для того, чтобы быть на безопасной стороне) JSHint просит вас, чтобы избежать его (то же самое касается и тире - символ):

/[[email protected]#$%\^&*?_~\-£(),.]/ 

Также вы должны обратить внимание на то, что нет необходимости в разграничении символов с запятой в наборах.

Подробнее о регулярном синтаксисе вы можете узнать в MDN.

+2

Собственно, '^' является только специальным, когда он сразу следует за открывающей скобкой. Это нормально, если в середине класса есть unescaped '^'. – georg

+1

@ thg435 Я предполагаю, что это проблема JSHint. – VisioN

+2

'нет необходимости в разграничении символов запятой в наборах. 'Вместо того, чтобы« не нужно », более точно сказать, что синтаксис таков. – nhahtdh