2010-02-22 68 views
5

我将如何检查Java中的字符串输入的格式为:特定Java正则表达式

XXXX-XXXX-XXXX-XXXX

其中x是一个数字0..9?

谢谢!在Java中

+2

删除我的答案 - 我在头脑中阅读“JavaScript”:P – 2010-02-22 23:56:59

回答

3

字符串对象具有matches方法,其可以检查针对正则表达式:

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

这种特殊的表达检查四位数字,然后三次(连字符和四位数),因此代表你的所需格式。

+0

注意:我再次编辑它是因为我遗漏了锚。使用锚定版本,而不是没有。 – Joey 2010-02-22 23:57:01

+0

为什么不能将其缩减为: myString.matches(“( - \\ d {4}){4}”); – 2010-02-22 23:59:05

+0

@Amir:因为你的字符串必须以连字符开头。 – Joey 2010-02-23 00:04:25

4

首先,这是一个很好的正则表达式来源:http://www.regular-expressions.info。访问它,戳和玩耍。此外,java.util.Pattern API具有简洁的overview正则表达式模式。

现在回到你的问题:你想匹配由连字符分隔的连续四个数字组。的4位的单个基团可以在正则表达式被表示为

\d{4} 

那些由连字符分隔的四个能够被表示为:

\d{4}-\d{4}-\d{4}-\d{4} 

把它缩短还可以代表的单组四位和四位连续的三组连字符前缀:

\d{4}(-\d{4}){3} 

现在,在Java中,你可以使用String#matches()来测试一个字符串是否匹配给定正则表达式。

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

请注意,我用一个反斜杠\躲过了反斜线\,因为反斜杠在String有特殊的含义。要表示实际的反斜杠,您必须使用\\

+0

它们对于String类没有特殊的含义。它们对编译器有特殊的意义。 – Joey 2010-02-22 23:58:52

+1

啧啧,我花了3分钟的努力,已经有了一个可以接受的答案。 – BalusC 2010-02-22 23:59:27

+0

@Johannes:谢谢你的努力:) – BalusC 2010-02-22 23:59:58