Linux
bash + 通過正則表達式驗證名稱
valid
當名稱為時,為什麼會列印以下正則表達式hdpworker01
?name=hdpworker01 [[ $name =~ worker[[:digit:]] ]] && echo valid
我嘗試做的是
valid
僅在名稱匹配時列印worker[0-999]
。預期結果範例:
- 對於
name=worker01
:valid
- 對於
name=hdpworker01
:無輸出
預設情況下,正則表達式不錨定到字元串的開頭或結尾。這與例如文件名通配模式不同。這意味著表達式可以匹配給定字元串中的任何位置。
要將表達式錨定到字元串的開頭,請使用
^worker[[:digit:]]
要另外將其錨定到字元串的末尾並允許一到三位數字,請使用
^worker[[:digit:]]{1,3}$
如果要匹配
worker10
但不匹配worker01
或worker003
(沒有零填充數字),請使用^worker([0-9]|[1-9][0-9]{1,2})$