特别是java正则表达式

时间:2010-02-22 23:52:14

标签: java regex

我如何检查Java中的String输入是否具有以下格式:

为xxxx-xxxx-XXXX-XXXX

其中x是数字0..9?

谢谢!

2 个答案:

答案 0 :(得分:4)

首先,这是regexp的重要来源: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中具有特殊含义。要表示实际反斜杠,您必须使用\\

答案 1 :(得分:3)

Java中的String对象有一个matches方法,可以检查正则表达式:

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

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