我正在尝试用Java编写正则表达式:
"/[A-Z]{6}-[A-Z]{4}-[A-Z]{4}/"
但它不起作用。例如
"AASAAA-AAAA-AAAA".matches("/[A-Z]{6}-[A-Z]{4}-[A-Z]{4}/")
返回false
。
正确的方法是什么?
答案 0 :(得分:5)
Java
!= JavaScript
,在这里您不需要使用/
包围正则表达式,所以请尝试
"AASAAA-AAAA-AAAA".matches("[A-Z]{6}-[A-Z]{4}-[A-Z]{4}")
否则你的正则表达式会搜索在开始和结束时也有/
的子字符串。
BTW你需要知道matches
检查正则表达式是否匹配整个字符串,所以
"aaa".matches("aa")
与
相同"aaa".matches("^aa$")
将返回false
,因为字符串无法与正则表达式完全匹配。
如果您希望找到与正则表达式匹配的子字符串,则需要使用
String input = "abcd";
Pattern regex = Pattern.compile("\\w{2}");
Matcher matcher = regex.matcher(input);
while (matcher.find()){//this will try to find single match
System.out.println(matcher.group());
}
输出:
ab
cd
答案 1 :(得分:0)
^[A-Z]{6}-[A-Z]{4}-[A-Z]{4}$
只是你不应该在开始和结束时添加反斜杠。改为^和$。 而且我没有看到你使用过Javscript的语法! Java!= Javascript