特定java正则表达式

特定java正则表达式,java,regex,Java,Regex,如何检查Java中的字符串输入是否具有以下格式: xxxx xxxx xxxx xxxx 其中x是数字0..9 谢谢 Java中的字符串对象有一个方法可以对照正则表达式进行检查: myString.matches("^\\d{4}(-\\d{4}){3}$") 此特定表达式检查四位数字,然后检查三次(连字符和四位数字),从而表示所需的格式。首先,这是一个很好的regexp源:。参观它,拨弄它,四处玩耍。此外,java.util.PatternAPI有一个简洁的正则表达式模式 现在,回到你的问

如何检查Java中的字符串输入是否具有以下格式:

xxxx xxxx xxxx xxxx

其中x是数字0..9


谢谢

Java中的字符串对象有一个方法可以对照正则表达式进行检查:

 myString.matches("^\\d{4}(-\\d{4}){3}$")

此特定表达式检查四位数字,然后检查三次(连字符和四位数字),从而表示所需的格式。

首先,这是一个很好的regexp源:。参观它,拨弄它,四处玩耍。此外,
java.util.Pattern
API有一个简洁的正则表达式模式

现在,回到你的问题:你想匹配四个连续的四位数组,用连字符分隔。在正则表达式中,一组4位数字可以表示为

\d{4}
其中由连字符分隔的四个可以表示为:

\d{4}-\d{4}-\d{4}-\d{4}
要使其更短,您还可以表示一组四位数字和三组连续的四位数字,前缀为连字符:

\d{4}(-\d{4}){3}
现在,在Java中,您可以使用它来测试字符串是否与给定的正则表达式匹配

boolean matches = value.matches("\\d{4}(-\\d{4}){3}");

请注意,我用另一个反斜杠将反斜杠转义为
\
,因为反斜杠在
字符串中有特殊含义。为了表示实际的反斜杠,您必须使用
\\

删除我的答案-我在脑海中读到了“JavaScript”:注意:我再次编辑了它,因为我遗漏了锚。使用锚定版本,而不是没有锚定版本。为什么不能将其简化为:myString.matches((\\d{4}{4}”)@阿米尔:因为您的字符串必须以连字符开头,所以。对错:默认情况下,Java正则表达式是锚定的
;)@Balus:Eek!好吧,这对我来说是个新闻。不过,公平地说,到目前为止,我从未在Java中使用过它们。出于好奇:那么,你是如何进行一场未经编排的比赛的呢?Pre-和append
*
?它们对String类没有特殊意义。它们对编译器来说有着特殊的意义。天啊,我花了3分钟的时间,已经有了一个公认的答案。不过,努力加1。正因为这个原因,我不再倾向于用琐碎的问题来回答;-)。除了批处理文件之外,我还有希望成为第一个正确、彻底地回答问题的人:-)