大于 10 且长度应为偶数的十六进制数字的正则表达式

如何创建一个正则表达式来检测长度满足以下要求的十六进制数字:偶数、大于或等于 10 且小于 256。


例如:


0x1234567890 Accepted

0x123456789 rejected

123456789 rejected

1234567890 accepted

12345678901 rejected

0x123456789012 accepted

123456789012 accepted

正则表达式:


^(0?[xX]?([^0-9a-fA-F]*(([0-9a-fA-F][0-9a-fA-F])+[^0-9a-fA-F]*)*))$

我已经尝试过上面的正则表达式,但它没有按预期工作,它正在检查偶数长度,但不检查输入是否大于或等于 10。


这里0x或0X是可选的..排除长度应大于或等于10


Qyouu
浏览 72回答 1
1回答

收到一只叮咚

您可以使用^(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*$请参阅正则表达式演示。请注意,在 Java 中,您可以替换[0-9a-fA-F]为\p{XDigit}.细节^- 字符串的开头(隐含在matches)(?=.{10,255}$)- 字符串末尾必须包含 10 到 255 个字符(此处, 是$强制性的)(?:0x)?- 可选的0x字符序列[0-9a-fA-F]{2}- 两个十六进制字符(?:[0-9a-fA-F]{2})*- 0 个或多个双十六进制字符序列$- 字符串结尾(隐式matches)在Java中,你可以像这样使用它str.matches("(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*")或者str.matches("(?=.{10,255}$)(?:0x)?\\p{XDigit}{2}(?:\\p{XDigit}{2})*")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java