簡體   English   中英

BASH正則表達式匹配MAC地址

[英]BASH regex match MAC address

我試圖讓用戶只輸入一個有效的mac地址(即0a:1b:2c:3d:4e:5f),並希望它比擴展形式更簡潔:

[[ $MAC_ADDRESS =~ [a-zA-Z0-9][a-zA-Z0-9]:[a-zA-Z0-9][a-zA-Z0-9]:[a-zA-Z0-9][a-zA-Z0-9]:[a-zA-Z0-9][a-zA-Z0-9]:[a-zA-Z0-9][a-zA-Z0-9] ]]

有沒有辦法像這樣做?

[[ $MAC_ADDRESS =~ ([a-zA-Z0-9]{2}:){5}[a-zA-Z0-9]{2} ]]

基本上,我想創建一個由兩個字母數字字符后跟冒號組成的“組”,然后重復五次。 我已經嘗試了我能想到的一切,我很確定這樣的事情是可能的。

我建議使用^$來確保沒有其他內容:

[[ "$MAC_ADDRESS" =~ ^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$ ]] && echo "valid" || echo "invalid"

編輯:為了在BASH ver 3.1上使用正則表達式,你需要引用正則表達式,所以下面應該工作:

[[ "$MAC_ADDRESS" =~ "^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$" ]] && echo "valid" || echo "invalid"

實際上,你的建議非常接近。 不要去A到Z,而是去A到F.

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

暫無
暫無

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

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