我如何检查Java中的String输入是否具有以下格式:
为xxxx-xxxx-XXXX-XXXX
其中x是数字0..9?
谢谢!
答案 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}$")
此特定表达式检查四位数,然后三次(连字符和四位数),从而表示您所需的格式。