如何验证MAC地址的格式?

Man*_*ora 16 python

验证用户输入的MAC地址的最佳方法是什么?

格式是HH:HH:HH:HH:HH:HH,每个H都是十六进制字符.

例如,00:29:15:80:4E:4A有效时00:29:804E4A无效.

650*_*502 49

如果你只是语法,那么这个正则表达式应该适合你

import re
...
if re.match("[0-9a-f]{2}([-:]?)[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$", x.lower()):
    ...
Run Code Online (Sandbox Code Playgroud)

它接受12位十六进制数字与任一:-有或全无作为隔板对之间(但隔板必须均匀...或者全部分离器:或全部-或不存在分离器).

这是解释:

  • [0-9a-f] 表示十六进制数字
  • {2} 意味着我们想要其中两个
  • [-:]?表示短划线或冒号,但可选.请注意,短划线作为第一个字符不是指范围,而仅表示其自身.此子表达式括在括号中,因此可以在以后作为后引用重用.
  • [0-9a-f]{2} 是另一对十六进制数字
  • \\1这意味着我们希望匹配之前匹配的相同表达式作为分隔符.这就是保证一致性的原因.请注意,regexp语法是,\1但我使用的是常规字符串,因此反斜杠必须通过加倍来转义.
  • [0-9a-f]{2} 另一对十六进制数字
  • {4} 上一个带括号的块必须重复4次,总共有6对数字: <pair> [<sep>] <pair> ( <same-sep> <pair> ) * 4
  • $ 字符串必须在它们之后结束

请注意,在Python中re.match只检查从字符串^的开头开始,因此不需要在开头的a .

  • 不要忘记正则表达式末尾的`$`。否则它也会匹配“00:29:15:80:4E:4A:any random text here”。 (3认同)