![Как проверить, имеет ли строка следующий формат XXXX](https://rvso.com/image/164739/%D0%9A%D0%B0%D0%BA%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C%2C%20%D0%B8%D0%BC%D0%B5%D0%B5%D1%82%20%D0%BB%D0%B8%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%20%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B8%D0%B9%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%20XXXX.png)
У меня уже есть :
$p =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]$
но это работает только для чисел, как сделать так, чтобы включались и слова, независимо от размера?
Например:
this.should.definitely.work
будет действительным и
this1.should.definitely.work2
тоже было бы справедливо
решение1
Наиболее точным шаблоном регулярного выражения для вашего случая будет:
^[^[:space:].]+\.[^[:space:].]+\.[^[:space:].]+\.[^[:space:].]+$
решение2
Я пришел к такому решению:
foo="this1.should.definitely.work2"
[[ $foo =~ ^.*\..*\..*\..*$ ]] && echo "match"
решение3
Вы можете использовать [[:alnum:]]
класс, который обозначает буквы и цифры:
$p =~ ^[[:alnum:]]+\.[[:alnum:]]+\.[[:alnum:]]+\.[[:alnum:]]+$