Java正则表达式验证\ []

时间:2011-10-21 08:59:40

标签: java regex

我的问题是只允许a-z, A-Z, 0-9,点,破折号和下划线以及给定字符串的[]。

这是我的代码,但到目前为止还没有。

[a-zA-Z0-9._-]*这个可用于验证a-z, A-Z, 0-9点,破折号和下划线,但是当涉及添加和[]时,我得到错误非法字符。 [a-zA-Z0-9._-\\[]] * 显然[]打破了正则表达式。

有任何建议如何处理这个问题?

String REGEX = "[a-zA-Z0-9._-\\[]]*";
String username = "dsfsdf_12";

Pattern pattern = Pattern.compile(REGEX);
Matcher matcher = pattern.matcher(username);

if (matcher.matches()) {
   System.out.println("matched");
} else {
  System.out.println("NOT matched");
}

5 个答案:

答案 0 :(得分:5)

您必须同时退出[],如下所示:

    "[a-zA-Z0-9._-\\[\\]]*"

答案 1 :(得分:2)

你需要逃避两个括号,而不仅仅是左括号:

String REGEX = "[a-zA-Z0-9._-\\[\\]]*";
String username = "dsfsdf_12";
    Pattern pattern = Pattern.compile(REGEX);
    Matcher matcher = pattern.matcher(username);
    if (matcher.matches()) {
        System.out.println("matched");
    } else {
        System.out.println("NOT matched");
    }

String REGEX =“[a-zA-Z0-9 ._ \ - \ [\] \\] *”; 最后的四个斜杠\允许您匹配\字符

如果你想测试任何正则表达式,有一个很棒的网站名为http://www.regextester.com/它可以让你玩正则表达式,以便你可以测试它们。

答案 2 :(得分:2)

尝试转义括号和减号:

String REGEX = "[a-zA-Z0-9._\\-\\[\\]]*";

在您对“/”和“\”的评论后进行修改:

允许/:

String REGEX = "[a-zA-Z0-9._\\-\\[\\]/]*";

允许\:

String REGEX = "[a-zA-Z0-9._\\-\\[\\]\\\\]*";

允许/和\:

String REGEX = "[a-zA-Z0-9._\\-\\[\\]/\\\\]*";

答案 3 :(得分:1)

逃离右括号:

String REGEX = "[a-zA-Z0-9._-\\[\\]]*";

答案 4 :(得分:0)

你必须在你的角色类中逃避],如下所示:

[a-zA-Z0-9._-\\[\\]]*