"非法逃脱角色"将java与Regex匹配的错误

时间:2014-05-03 04:14:31

标签: java regex

我刚开始在java中使用正则表达式,我创建了一个监控澳大利亚股市的应用程序。我希望能够确保用户输入了3个大写字母,一个fullstop和AX。 - 像BHP.AX这样的东西 所以我尝试使用以下内容:

if(input.matches("^[A-Z]{3}\.AX$")){ //do something }

然而,这给我一个错误说“非法逃脱字符” 任何人都可以给我任何帮助吗

2 个答案:

答案 0 :(得分:8)

字符串必须为"^[A-Z]{3}\\.AX$"。令人困惑的部分是\既是Java转义字符又是正则表达式转义字符。您所做的正则表达式是正确的,但\.被Java解释为“逃避''。” ”。如果你如上所述转义反斜杠("^[A-Z]{3}\\.AX$"),Java会将字符串解释为^[A-Z]{3}\.$,这是你想要的正则表达式。

答案 1 :(得分:3)

你需要逃避反斜杠,否则你将逃避这段时间。

if(input.matches("^[A-Z]{3}\\.AX$")){ //do something }