2013-12-24 14 views
-2

Я хочу получить от пользователя строку (одно слово), она должна передать следующие критерии: строка может содержать только алфавитные символы (aA-zZ) и символы подчеркивания. любые другие цифры не допускаются. Как я могу это сделать в bash?Проверьте, не содержит ли строка только символы и символы подчеркивания

+2

по характеру вы имеете в виду алфавитные символы? '[A-Za-Z]'? Потому что по определению все в String является символом ... – corsiKa

+2

Не могли бы вы показать нам, что вы уже пробовали? – Donovan

+0

Какой код у вас есть? Что, кажется, идет не так с этим? Вы читали man-страницу для Bash? – danfuzz

ответ

6

Используйте =~, чтобы проверить строку на (POSIX extended) регулярное выражение. См. Manpages bash(1) и regex(7) для получения дополнительной информации.

# assume your string is in variable $s 
if [[ $s =~ ^[A-Za-z_]+$ ]]; then 
    # it matches 
else 
    # doesn't match 
fi 
+0

Это сработало. Спасибо;) – Khaleal

+0

Я не понял, как работает этот код. Манипуляции не так понятны. Что на самом деле делают = ~ и + +? – Khaleal

+1

http://www.codeproject.com/Articles/939/An-Introduction-to-Regular-Expressions – tinkertime

Смежные вопросы