如何創(chuàng)建一個正則表達式來檢測長度滿足以下要求的十六進制數(shù)字:偶數(shù)、大于或等于 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]*)*))$我已經(jīng)嘗試過上面的正則表達式,但它沒有按預期工作,它正在檢查偶數(shù)長度,但不檢查輸入是否大于或等于 10。這里0x或0X是可選的..排除長度應大于或等于10
1 回答

收到一只叮咚
TA貢獻1821條經(jīng)驗 獲得超5個贊
您可以使用
^(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*$
請參閱正則表達式演示。請注意,在 Java 中,您可以替換[0-9a-fA-F]
為\p{XDigit}
.
細節(jié)
^
- 字符串的開頭(隱含在matches
)(?=.{10,255}$)
- 字符串末尾必須包含 10 到 255 個字符(此處, 是$
強制性的)(?:0x)?
- 可選的0x
字符序列[0-9a-fA-F]{2}
- 兩個十六進制字符(?:[0-9a-fA-F]{2})*
- 0 個或多個雙十六進制字符序列$
- 字符串結(jié)尾(隱式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
提交
取消