Java 十六进制数大于10且长度应为偶数的正则表达式
如何创建一个正则表达式来检测长度满足以下要求的十六进制数:偶数、大于或等于10、小于256 例如:Java 十六进制数大于10且长度应为偶数的正则表达式,java,regex,Java,Regex,如何创建一个正则表达式来检测长度满足以下要求的十六进制数:偶数、大于或等于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-f
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,您可以使用
^(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*$
看。注意,在Java中,您可以将[0-9a-fA-F]
替换为\p{XDigit}
详细信息
-字符串的开头(隐式在^
)匹配中
-从10到255个字符必须一直到字符串的末尾(这里,(?=.{10255}$)
是必须的)$
-可选的(?:0x)?
字符序列0x
-两个十六进制字符[0-9a-fA-F]{2}
-0或更多双十六进制字符序列(?:[0-9a-fA-F]{2})*
-字符串结尾(隐式在$
匹配项中)
str.matches("(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*")
或
为什么?如果您正在对这些进行任何有用的操作,您将不得不转换它们,此时您可以发出错误。为什么同时使用皮带和支架?如何接受0x1234567890?比256还多?你指的是长度吗?我看到它在底部被澄清了,但在顶部的段落中不清楚。
str.matches("(?=.{10,255}$)(?:0x)?\\p{XDigit}{2}(?:\\p{XDigit}{2})*")