示例:if(str.matches(".*\\d.*"))
我最近用它来检查数组的值是否包含数字。
背后的逻辑是什么?为什么.* .*
在那里? \\d
是什么意思?
答案 0 :(得分:2)
.
符号匹配除换行符之外的任何字符。 *
重复其背后的角色0次或更多次。 \d
匹配任何数字。 \
中的额外\\d
用于从字符串中转义反斜杠。所以.\\d.
匹配任何单个字符,数字和任何单个字符。它符合以下条件:a1b
,p3k
,&2@
.*\\d.*
匹配0个或更多字符,数字和0个或更多字符。它将符合以下条件:2
,11
,123
,asdf6klj
如果您想匹配1个或多个字符,可以使用+
,{2,}
,{3,5}
等。
+
表示重复前一个字符1次或更多次。
{2, }
表示重复前一个字符两次或更多次。
{3, 5}
表示重复前一个字符3到5次。
有关详细信息,您可以查看许多正则表达式教程,例如:
http://www.tutorialspoint.com/java/java_regular_expressions.htm
答案 1 :(得分:1)
答案 2 :(得分:0)
这是一个正则表达式。
.
表示任何字符*
表示[前面的匹配器] \\d
是一个数字所以,你把它放在一起,这个正则表达式匹配一个具有以下内容的字符串:任意数字的任意数字,然后是一个数字,然后是任意数量的任何字符。如果我们翻译这个"正式"对于更易读的人来说,它只是指一个在其中某处有数字的字符串。
答案 3 :(得分:0)
\ d表示是否有任何数字但是' \'是一个转义序列,因此使用'\\'
。
在C#中,您还可以使用@".*\d.*"
(在Java中不确定,但我认为它应该有用)
*
表示任意数量的字符。