无效的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}