簡體   English   中英

逗號分隔、冒號或破折號分隔值的 MAC 地址正則表達式驗證

[英]MAC Address regex validation for comma separated, colon or dash delimited values

我正在使用以下正則表達式來驗證 MAC 地址:

pattern("^([a-fA-f0-9]){12}(,\s*([a-fA-f0-9]){12})*$")

它適用於以下輸入:

12aeabc11bba,662baea1abc2

我想改進它以支持以下 MAC 地址樣式:

12-ae-ab-c1-1b-ba,66-2b-ae-a1-ab-c2
12ae-abc1-1bba,662b-aea1-abc2
12:ae:ab:c1:1b:ba,66:2b:ae:a1:ab:c2
12ae:abc1:1bba,662b:aea1:abc2
12aeabc11bba,662baea1abc2

Regex 不需要支持以下 MAC 地址樣式,但是如果 Regex 允許這些樣式也可以:

12:ae:ab:c1:1b:ba,66-2b-ae-a1-ab-c2
2134:12:12:1234,ae-12-ae-42-62-ae
ae12-bc33-a122,fe12:ae12:ab54
ae12:bc33-a122

我正在使用Angular5 ,並且這個驗證被傳遞給FormBuilder驗證,所以我認為我不能放入多個模式。

this.requestForm = this.fb.group({
    macAddresses: ['', [Validators.required, Validators.pattern("^([a-fA-f0-9]){12}(,\s*([a-fA-f0-9]){12})*$")]]
});

任何人都可以幫助解決問題嗎?

誰用最干凈的解決方案回答這個問題將獲得 100 代表的賞金獎勵

試試這個正則表達式:

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

點擊演示

解釋:

  • ^ - 斷言行的開始
  • [a-fA-F0-9]{2} - 匹配 2 次出現在afAF范圍內的數字或字母
  • (?:[:-]?[a-fA-F0-9]{2}){5} - 匹配:- 0 或 1 次出現。 后跟 5 次出現在afAF范圍內的數字或字母
  • (?:,[a-fA-F0-9]{2}(?:[:-]?[a-fA-F0-9]{2}){5})* - 匹配 a ,后跟 MAC地址。 末尾的*表示出現 0+ 次,后跟 MAC 地址。
  • $ - 斷言行尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM