无效的Java正则表达式

无效的Java正则表达式,java,regex,string,regular-language,Java,Regex,String,Regular Language,我有一个正则表达式: private final String CUSTOM_REGEX = "[679]\d{8}"; 它应该表示从6、7或9开始的任何数字,其中有八个以上的数字。(即“611234392”、“782123842”或“934233875”) 但是,我收到一个错误“无效的scape序列” 有任何提示吗?请使用以下命令: private final String SPANISH_NUMBER_REGEX = "[679]\\d{8}";

我有一个正则表达式:

private final String CUSTOM_REGEX = "[679]\d{8}";
它应该表示从6、7或9开始的任何数字,其中有八个以上的数字。(即“
611234392
”、“
782123842
”或“
934233875
”)

但是,我收到一个错误“无效的scape序列”

有任何提示吗?

请使用以下命令:

private final String SPANISH_NUMBER_REGEX = "[679]\\d{8}";
                                                  ^^
为什么?

在字符串文字的Java中,您必须用一个或多个
\
转义
\
,因为它本身是一个特殊字符,需要转义。

使用以下方法:

private final String SPANISH_NUMBER_REGEX = "[679]\\d{8}";
                                                  ^^
String SPANISH_NUMBER_REGEX = "[679]\d{8}";
为什么?

在Java的字符串文本中,您必须用一个以上的
\
转义
\
,因为它本身是一个特殊字符,需要转义

String SPANISH_NUMBER_REGEX = "[679]\d{8}";
\
是字符串文字中的一个特殊字符,即转义字符。您需要将其转义以获得正确的结果:

String SPANISH_NUMBER_REGEX = "[679]\\d{8}";
\
是字符串文字中的一个特殊字符,即转义字符。您需要将其转义以获得正确的结果:

String SPANISH_NUMBER_REGEX = "[679]\\d{8}";

反斜杠字符
\
用于引入转义结构,以及引用否则将被解释为未转义结构的字符。因此表达式
\\
匹配一个反斜杠,
\{
匹配一个左大括号


来自Oracle官方文档:.

反斜杠字符
\
用于引入转义结构,以及引用否则将被解释为未转义结构的字符。因此表达式
\\
匹配单个反斜杠,
\{
匹配左大括号


从甲骨文官方文档:。

使用双反斜杠:
“[679]\\d{8}”
@anubhava您如何在接受带有该可选前缀的数字之前加上+34?(即“+34675645123”和“675645123”都有效)我尝试了“{+34}”[679]\\d{8}”,但它不起作用。它将是:
“(\\+34[679]\\d{8}”
你需要展示一下它是如何对你不起作用的。@anubhava对不起,伙计,我的错误。它起作用了。使用双反斜杠:
“[679]\\d{8}”
@anubhava你如何在接受带有可选前缀的数字之前加上+34?(即“+34675645123”和“675645123”都有效)我试过“{+34}”[679]\\d{8}”但它不起作用。它将是:
“(\\+34)?[679]\\d{8}”
你需要展示一下它是如何对你不起作用的。@anubhava对不起,伙计,我的错误。它起作用了。谢谢你。你如何在接受带有可选前缀的数字之前加上+34?(即“+34675645123”和“675645123”都是有效的)我试过“{+34}”[679]\\d{8}”但事实并非如此working@stackpepe使用
([+]34)?[679]\\d{8}
谢谢你。你如何在接受带有可选前缀的数字之前加上+34?(即“+34675645123”和“675645123”都是有效的)我试过“{+34}”?[679]\\d{8}”,但不是working@stackpepe使用
([+]34)?[679]\\d{8}