如何创建一个正则表达式来检测长度满足以下要求的十六进制数字:偶数、大于或等于 10 且小于 256。例如:0x1234567890 Accepted0x123456789 rejected123456789 rejected1234567890 accepted12345678901 rejected0x123456789012 accepted123456789012 accepted正则表达式:^(0?[xX]?([^0-9a-fA-F]*(([0-9a-fA-F][0-9a-fA-F])+[^0-9a-fA-F]*)*))$我已经尝试过上面的正则表达式,但它没有按预期工作,它正在检查偶数长度,但不检查输入是否大于或等于 10。这里0x或0X是可选的..排除长度应大于或等于10
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
您可以使用
^(?=.{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})*")
添加回答
举报
0/150
提交
取消