Vous avez encodage problème avec votre code source du fichier. C'est peut-être ISO-8859-1 codé, mais le compilateur a été défini pour utiliser UTF-8. Cela se traduit par des erreurs lors de l'utilisation de caractères, qui n'aura pas les mêmes octets de la représentation en UTF-8 et ISO-8859-1. Ce sera le cas pour tous les caractères qui ne font pas partie de l'ASCII, par exemple ¬
de ne PAS SIGNER.
Vous pouvez simuler ce avec le programme suivant. Il utilise juste votre ligne de code source et génère une ISO-8859-1 tableau d'octets et de décoder ce "problème" avec l'encodage UTF-8. Vous pouvez voir à quelle position de la ligne est corrompu. J'ai ajouté 2 espaces à votre code source pour l'adapter à la position de 74 pour s'adapter à ce ¬
PAS de SIGNE, qui est le seul personnage, ce qui va générer différents octets en ISO-8859-1 codage et encodage UTF-8. Je suppose que cela va correspondre à l'indentation avec la vraie source du fichier.
String reg = " String reg = \"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~#;:?/@&!\"'%*=¬.,-])(?=[^\\s]+$).{8,24}$\";";
String corrupt=new String(reg.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(corrupt+": "+corrupt.charAt(74));
System.out.println(reg+": "+reg.charAt(74));
ce qui entraîne la sortie suivante (foiré à cause de la majoration):
Chaîne reg = "^(?=.[0-9])(?=.[a-z])(?=.[A-Z])(?=.[~#;:?/@&!"'%*=�.,-])(?=[^\s]+$).{8,24}$";: �
Chaîne reg = "^(?=.[0-9])(?=.[a-z])(?=.[A-Z])(?=.[~#;:?/@&!"'%*=.,-])(?=[^\s]+$).{8,24}$";:
Voir "en live" lors d' https://ideone.com/ShZnB
Pour résoudre ce problème, enregistrez les fichiers source avec l'encodage UTF-8.