【问题标题】:Regex for multiple MAC addresses separated by comma?用逗号分隔的多个MAC地址的正则表达式?
【发布时间】:2011-10-01 16:54:17
【问题描述】:

我想知道用于匹配多个 MAC 地址的正确正则表达式分隔我的任何分隔符,例如逗号。

单个 MAC 地址的正则表达式为:^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}$

因此,对于以逗号分隔的多个 MAC 地址,我认为 ^(([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2},?)){+}$ 可以解决问题。

我哪里出错了?任何帮助将不胜感激,谢谢。

编辑:有些人问出了什么问题。好吧,简单地说,正则表达式不起作用。假设我输入了一个(有效的)MAC 地址,它被标记为无效的 MAC 地址。以逗号分隔的多个 MAC 地址也是如此。

ASP .NET 页面上的文本框的验证器需要正则表达式。如果需要更多详细信息,请告诉我。

【问题讨论】:

  • 当你没有解释哪里出了问题时你就错了。
  • Mac 地址可以不用逗号分隔。您需要让它与长度为 0、1 或逗号分隔的 >2 的列表匹配。即:^$|MRE(,MRE)*
  • 使用哪个正则表达式引擎?

标签: regex delimiter mac-address


【解决方案1】:

^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}(,([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2})*$

有关制作正则表达式以匹配分隔列表的详细信息,请参阅Regex for Comma delimited list。基本上,您需要将 MAC 地址的正则表达式放在包含逗号的组和匹配零次或多次的 MAC 地址的正则表达式后面。在您尝试的解决方案中,逗号是完全可选的。

【讨论】:

    【解决方案2】:
    ^(?:((?:[a-fA-F0-9]{2}[-:]){5}(?:[a-fA-F0-9]{2}))(?:,|$)))+$
    

    这可确保八位字节由:- 分隔。不允许使用空格或其他字符。第一组将捕获所有的 MAC 地址。匹配将捕获整个字符串,如果无效则匹配失败。

    【讨论】:

      【解决方案3】:

      试试这个 ^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}(,([0-9a-fA-F ]{2}[:-]){5}[0-9a-fA-F]{2})+

      【讨论】:

        最近更新 更多