[英]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.