我有一个十六进制字符串,每个字节都有space
分隔符。
例如,A1 B2 C3 D4 E5 FF 00 11 22 33 44 ...
我想使用正则表达式验证器来验证用户输入是否正确?
我怎样才能编写正则表达式来实现这个目标?
答案 0 :(得分:1)
这样的事情:
^[A-F0-9]{2}( [A-F0-9]{2})*$
说明:
^ - anchor: string start
[A-F0-9]{2} - two symbols in either 0..9 or A..F range
( [A-F0-9]{2})* - followed by space and two 0..9 or A..F symbols zero or more times
$ - anchor: string end
如果您允许a..f
作为有效的十六进制符号
^[A-Fa-f0-9]{2}( [A-Fa-f0-9]{2})*$
答案 1 :(得分:0)
我想提出一个基于 DRY 原则的解决方案 (不要重复自己)。
您可以:
而不是编写相同的模式(如提议的 Dmitry )([A-F0-9]{2})
。(?1)
。所以整个模式可以是^([A-F0-9]{2})( (?1))*$
。
还有其他变种"呼叫"捕获组,例如
(?-1)
- 调用前一组或(?&name)
- 调用指定的组。有关详细信息,请参阅https://www.regular-expressions.info/subroutine.html