为什么我收到此编译错误?

Eam*_*ney -1 java regex

照片:

http://puu.sh/1JNxE.png

错误:

C:\Users\Eamon\programming\java>javac shop/Main.java
.\shop\Catalogue.java:41: error: illegal escape character
            Pattern.compile("^[A-Za-z][\d]{4}$");
                                        ^
1 error

C:\Users\Eamon\programming\java>javac shop/Main.java
.\shop\Catalogue.java:41: error: illegal escape character
            Pattern.compile("^[A-Za-z][\p{Digit}]{4}$");
                                        ^
1 error
Run Code Online (Sandbox Code Playgroud)

代码:

Pattern.compile("^[A-Za-z][\p{Digit}]{4}$"); 
Run Code Online (Sandbox Code Playgroud)

参考资料:

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum

Per*_*ror 7

你需要逃避\d\p使用额外的反斜杠,因为它们不是有效的转义序列.

"^[A-Za-z][\d]{4}$"
Run Code Online (Sandbox Code Playgroud)

应该

"^[A-Za-z][\\d]{4}$"
Run Code Online (Sandbox Code Playgroud)

"^[A-Za-z][\p{Digit}]{4}$"
Run Code Online (Sandbox Code Playgroud)

应该

"^[A-Za-z][\\p{Digit}]{4}$"
Run Code Online (Sandbox Code Playgroud)

  • 数字=="\\ d" (3认同)