我的问题是只允许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");
}
答案 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._-\\[\\]]*