正则表达式不接受密码中的#字符

时间:2017-12-15 09:19:42

标签: regex passwords

这是正则表达式:

("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,50}")

密码必须至少包含1个大写字母,1个小写字母,1个数字和1个特殊字符,最少8个,最多50个字符。

但是这个表达式不接受密码

中的#

3 个答案:

答案 0 :(得分:0)

它适用于我:

enter image description here

你能发布实施方式吗?

答案 1 :(得分:0)

正则表达式似乎对我也很好:

function create(){
    ground = game.add.tileSprite(0, 100, game.width, 50, 'ground');
}

打印出来:

public static void main(String[] args) throws IOException {
    Pattern pat = Pattern.compile("(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@!%*#?&])[A-Za-z\\d$@!%*#?&]{8,50}");
    System.out.println(pat.matcher("#GRDiD1ddddddddd").matches());
    System.out.println(pat.matcher("GRDiD1ddddddddd!#").matches());
    System.out.println(pat.matcher("GRDiD1d#ddddddd!").matches());
    System.out.println(pat.matcher("GRDiD1d#dd#ddddd!").matches());
}

顺便说一句,正则表达式包含多余的美元字符,可以简化为:

true
true
true
true

答案 2 :(得分:0)

尝试使用:

("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!-/])[!-z]{8,50}")