为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Qyouu 2023-09-20 15:57:08
如何创建一个正则表达式来检测长度满足以下要求的十六进制数字:偶数、大于或等于 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})*")


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信