Regex em jQuery Validation – questão de citação única em jQuery

Eu tenho uma expressão regular para validar uma senha para conter números, caracteres minúsculos e maiúsculos.

O abaixo funciona bem. Mas quando eu uso isso na validação do jQuery:

txtPassword: { required: true, regex: Regex } Regex = (?=^.{8,16}$)(?=.*\d)(?=.*[az])(?=.*[AZ])(?=.*[!@#$%^&*()_+}{":;/'?/>.<,])(?!.*\s).*$ 

Mas o problema é aspas simples ' em JavaScript. Pode algum corpo por favor me ajudar a resolver isso? Obrigado.

Existem várias coisas que precisam ser corrigidas neste regex:

  • Em sua verificação antecipada da senha, você tem um período sem um quantificador. Por isso, sempre falhará nessa verificação. Por exemplo, para a verificação do número, você deve ter (?=.*\d) vez de (?=.\d) .
  • Você não evita caracteres com uma barra invertida / , em vez disso, usa uma barra invertida \ . Você escapou incorretamente com um forwardslash na última class de caracteres.
  • Os únicos caracteres especiais ou metacaracteres dentro de uma class de caracteres são o colchete de fechamento ( ] ), a barra invertida ( \ ), o circunflexo ( ^ ) eo hífen ( - ). Por isso, não é devido à citação única. O culpado é o seu cursor que não é escapado.

Tente este regex onde o caret ^ é escapado em vez do quote ' :

 (?=^.{8,16}$)(?=.*\d)(?=.*[az])(?=.*[AZ])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$ 

Estou assumindo pela sua pergunta, você quis dizer um Regexp para validar uma senha com:

  • pelo menos 1 número
  • pelo menos 1 personagem de menor compra
  • pelo menos 1 caractere maiúsculo
  • pelo menos 1 caractere especial fora do conjunto !@#$%^&*()_+}{":;'?/>.<,
  • comprimento entre 8 e 16 caracteres

Se isso for verdade, atualize sua pergunta com o requisito esclarecido.


Brinque com o regex em RegexPal


código baseado em jQuery. Mexa com isso aqui :

 var regex = /(?=^.{8,16}$)(?=.*\d)(?=.*[az])(?=.*[AZ])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$/g; //if(regex.test($('#txtPassword').val())){ alert('Match'); }else{alert('No Match')} if (regex.test('P@sSw0rD')) { alert('Match'); } else { alert('No Match'); }​