Java 这个正则表达式是什么意思:\\d{3}-\\d{4}*
请注意regx中的空格!无论如何,感谢所有努力贡献的人。对于空间,我想这真的很有挑战性 我看到当前代码有以下内容:Java 这个正则表达式是什么意思:\\d{3}-\\d{4}*,java,regex,perl,Java,Regex,Perl,请注意regx中的空格!无论如何,感谢所有努力贡献的人。对于空间,我想这真的很有挑战性 我看到当前代码有以下内容: Perl5Compiler compiler = new Perl5Compiler(); Perl5Matcher matcher = new Perl5Matcher(); Pattern pattern = compiler.compile("\\ d{ 3 } -\\d{4}.* "); // pattern for string starting with " 00 0
Perl5Compiler compiler = new Perl5Compiler();
Perl5Matcher matcher = new Perl5Matcher();
Pattern pattern = compiler.compile("\\ d{ 3 } -\\d{4}.* "); // pattern for string starting with " 00 0 - 00 0 0 "
if (matcher.matches(Num, pattern)) {
return true;
}
但是,我觉得“\\d{3}-\\d{4}.*”
与“00 0-00 0”
匹配是不对的。有人知道这个正则表达式的真正含义吗?或者从另一个角度来看,“00 0-00 0 0”的正确正则表达式是什么?此正则表达式(如果删除空格)将匹配表单的任何表达式
###-####
其中,#
表示一个数字,-
的字面意思是-
此正则表达式(如果空格被删除)将匹配表单的任何表达式
###-####
其中,#
表示一个数字,-
的字面意思是-
它看起来(去掉空格)应该与电话号码匹配(无国家代码和区号)
\d{3}-\d{4}
表示
-
,或XXX-XXXX
(其中每个X
都是一个数字)。它看起来(去掉空格)应该与电话号码匹配(无国家代码和区号)
\d{3}-\d{4}
是指
-
,或XXX-XXXX
(其中每个X
都是一个数字)。这是雅加达Oro的用法(该公司已退休两年)
我能看到的唯一一件事是,空格被完全弄乱了,因为如果使用regex^\d{3}-\d{4}.*$
,它实际上与(空格挑战)注释所说的内容相匹配,即任何以三位数字开头的字符串,然后是连字符,然后是四位数字
请注意,
.matches()
是一个误称(Java的.matches()
方法也是如此),因为它试图匹配整个输入,这不是正则表达式匹配的定义(这也是我锚定正则表达式的原因)。这是Jakarta Oro的用法(顺便说一句,它已经退役两年了)
我能看到的唯一一件事是,空格被完全弄乱了,因为如果使用regex^\d{3}-\d{4}.*$
,它实际上与(空格挑战)注释所说的内容相匹配,即任何以三位数字开头的字符串,然后是连字符,然后是四位数字
请注意,
.matches()
是一个误称(Java的.matches()
方法也是如此),因为它试图匹配整个输入,这不是正则表达式匹配的定义(这也是我锚定正则表达式的原因)。这些人说它将匹配\
但是他们忘记了解释*
这个词,它本质上意味着“其他任何东西”,而
表示除换行符以外的任何字符
它对正则表达式的成功没有多大影响,但它防止正则表达式在匹配时跨越多个换行符。这通常是理想的,这取决于您是否希望输入中出现换行以及它们的明显含义
编辑:首先,编辑的正则表达式不会在Java中编译,在{}
而且,里面的空间是没有意义的,它只是寻找量化的数字
因此,假设您从它匹配的{}
之间删除这些空格
“ddd-#####”
这里的“d”是字母“d”的字面意思,“#”也是任意数字值。同样,由于*
,这后面还可以加上任何内容。但是现在,因为*
后面有一个额外的空格,所以匹配的字符串也必须以至少一个空格结尾。。。。这是一个非常无用的表达式,您确定要逐字解释第一个d
??也许您应该再次检查语法
另外,有趣的是,没有必要逃离第一个空间,你的正则表达式
“\\d{3}-\\d{4}.*”
在语法上等同于“d{3}-\\d{4}.*”
这些人是正确的,它将匹配###-######
但是他们忘记了解释*
这个词,它本质上意味着“其他任何东西”,而
表示除换行符以外的任何字符
它对正则表达式的成功没有多大影响,但它防止正则表达式在匹配时跨越多个换行符。这通常是理想的,这取决于您是否希望输入中出现换行以及它们的明显含义
编辑:首先,编辑的正则表达式不会在Java中编译,在{}
而且,里面的空间是没有意义的,它只是寻找量化的数字
因此,假设您从它匹配的{}
之间删除这些空格
“ddd-#####”
这里的“d”是字母“d”的字面意思,“#”也是任意数字值。同样,由于*
,这后面还可以加上任何内容。但是现在,因为*
后面有一个额外的空格,所以匹配的字符串也必须以至少一个空格结尾。。。。这是一个非常无用的表达式,您确定要逐字解释第一个d
??也许您应该再次检查语法
另外,有趣的是,没有必要逃离第一个空间,你的正则表达式
“\\d{3}-\\d{4}.*”
在语法上等同于“d{3}-\\d{4}.*”
字符串文字
"\\d{3}-\\d{4}.*"
生成字符串
\d{3}-\d{4}.*
当用作Perl5Matcher正则表达式模式时,它匹配
以3位数字开始*
紧接着是破折号
后跟4位数字
后跟0个或多个非换行符的字符**
后跟字符串的末尾
比如说,
123-1234
:匹配
123-1234XYZ
:匹配
123-1A34
:无ma