构造正则表达式模式与java中给定的无效输入不匹配

时间:2017-05-10 09:41:50

标签: java regex

我正在为Android标识符构建正则表达式模式。 Android标识符应采用以下格式,

<8 character alphaNumeric>-<4 character alphaNumeric>-<4 character alphaNumeric>-<12 character alphaNumeric>

示例android id是,

5f302bf7-97ad-4c24-86f5-823f881d954e

所以,为了匹配上面的格式我的正则表达式模式,

"^([A-Fa-f0-9]{8}\\" + "-[A-Fa-f0-9]{4}\\" + "-[A-Fa-f0-9]{4}\\"

如果我将无效的Android标识为,

00000000-0000-0000-0000-000000000000

也匹配上述正则表达式。

如何构造与上述无效标识符不匹配的正则表达式模式?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您需要验证具有以下规则的标识符

  • 它应该只允许十六进制字符(0-9,a-f和A-F)
  • 长度应为28个字符,用短划线( - )和结构{8个字符} - {4个字符} - {4个字符} - {12个字符}
  • 分隔

正则表达式:^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$

Regex101 Demo

匹配

FF000000-0000-0000-0000ABCDEF0A
00000000-0000-0000-000000000000

拒绝:

00000000-0000-0000-0000-000000000000
00000000 0000 0000 0000 000000000000
00000000000000000000000000000000
00000000-0000-0000-00000000000G