正则表达式模式匹配“AA BB CC DD”

时间:2018-03-23 07:56:29

标签: regex

我有一个十六进制字符串,每个字节都有space分隔符。

例如,A1 B2 C3 D4 E5 FF 00 11 22 33 44 ...

我想使用正则表达式验证器来验证用户输入是否正确?

我怎样才能编写正则表达式来实现这个目标?

2 个答案:

答案 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
  • 将2个十六进制数字的模式写为捕获组 - ([A-F0-9]{2})
  • "呼叫"它再次使用(?1)

所以整个模式可以是^([A-F0-9]{2})( (?1))*$

还有其他变种"呼叫"捕获组,例如

  • (?-1) - 调用前一组或
  • (?&name) - 调用指定的组。

有关详细信息,请参阅https://www.regular-expressions.info/subroutine.html