java正则表达式[A-Z] {6} - [A-Z] {4} - [A-Z] {4}

时间:2014-06-30 13:54:53

标签: java regex

我正在尝试用Java编写正则表达式:

"/[A-Z]{6}-[A-Z]{4}-[A-Z]{4}/"

但它不起作用。例如

"AASAAA-AAAA-AAAA".matches("/[A-Z]{6}-[A-Z]{4}-[A-Z]{4}/")

返回false

正确的方法是什么?

2 个答案:

答案 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