[英]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 次出現在af
或AF
范圍內的數字或字母(?:[:-]?[a-fA-F0-9]{2}){5}
- 匹配:
或-
0 或 1 次出現。 后跟 5 次出現在af
或AF
范圍內的數字或字母(?:,[a-fA-F0-9]{2}(?:[:-]?[a-fA-F0-9]{2}){5})*
- 匹配 a ,
后跟 MAC地址。 末尾的*
表示出現 0+ 次,
后跟 MAC 地址。$
- 斷言行尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.