Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 十六进制数大于10且长度应为偶数的正则表达式_Java_Regex - Fatal编程技术网

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

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

如何创建一个正则表达式来检测长度满足以下要求的十六进制数:偶数、大于或等于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,您可以使用

^(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*$
看。注意,在Java中,您可以将
[0-9a-fA-F]
替换为
\p{XDigit}

详细信息

  • ^
    -字符串的开头(隐式在
    匹配中
  • (?=.{10255}$)
    -从10到255个字符必须一直到字符串的末尾(这里,
    $
    是必须的)
  • (?:0x)?
    -可选的
    0x
    字符序列
  • [0-9a-fA-F]{2}
    -两个十六进制字符
  • (?:[0-9a-fA-F]{2})*
    -0或更多双十六进制字符序列
  • $
    -字符串结尾(隐式在
    匹配项中)
在Java中,您可以像

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})*")