1

我正在尝试在java中编写一个正则表达式,它将验证以下格式 -

XXXXXXXX_YZZZZ

在哪里

X – alphanumeric characters(8 characters)
Y - alpha character
Z - numeric characters

我为第一部分尝试的是 -^[a-zA-Z0-9 ]*$但我不知道如何去第二部分。

谁能告诉我所需格式的正确正则表达式是什么?

4

8 回答 8

5

你忘了指定金额和我假设的下划线......

/^[a-z0-9]{8}_[a-z][0-9]{4}$/i
于 2013-01-29T10:15:42.343 回答
4

查看JavaDoc,然后您可以将您的要求转换为:

"^\\p{Alnum}{8}_\\p{Alpha}\\p{Digit}{4}$"

它使用预定义的字符类,就像您在问题中列出的那样。

于 2013-01-29T10:22:12.340 回答
2

这个怎么样?

^[a-ZA-Z0-9]{8}\_[a-zA-Z][0-9]{4}$

您还可以对结果进行分组:

^([a-ZA-Z0-9]{8})\_([a-zA-Z])([0-9]{4})$

这样您就可以从结果中单独处理 X、Y 和 Z 部分。

于 2013-01-29T10:16:52.240 回答
2

试试这个正则表达式:

^[A-Za-z\d]{8}_[A-Za-z]\d{4}$

您的正则表达式匹配零个或多个字母数字字符和/或空格。

这是学习正则表达式的好地方:http ://www.regular-expressions.info

于 2013-01-29T10:17:00.977 回答
1

试试这个正则表达式

^[a-zA-Z0-9]{8}[_][a-zA-Z][0-9]{4}$
于 2013-01-29T10:48:47.960 回答
0

尝试:

^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$

Regexper是您的朋友。

于 2013-01-29T10:16:36.030 回答
0
^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$
于 2013-01-29T10:19:27.930 回答
0

在 Java 中,您可以使用元字符来表达正则表达式:

    "8abba778_a2012".matches("^\\w{8}_[a-z]\\d{4}$"); 

[编辑]:根据@Jon Dvorak,我正在纠正我的答案。实际上,\w 过于大方,也适用于下划线字符_。正确答案 :

     "8abba778_a2012".matches("^[a-zA-Z0-9]{8}_[a-z]\\d{4}$"); 
于 2013-01-29T10:24:53.433 回答