Это не совсем то, что нужно I ; как некоторые были сломаны или недостаточно либеральны. Например, если у вас есть папка с именем stackoverflow.com
без точек, это сломает ее. Реализации несовместимы с тем, что означает \w
, поэтому я бы не рекомендовал использовать это, тем более что мы прекрасно знаем, какие символы нам нужны.
Ниже приведен пример bash для построения регулярного выражения:
#should match 99.9% of SSH users
user_regex='[a-zA-Z][a-zA-Z0-9_]+'
#match domains
host_regex='([a-zA-Z][a-zA-Z0-9\-]*\.)*[a-zA-Z][a-zA-Z0-9\-]*'
#match paths starting with / and empty strings (which is valid for our use!)
path_regex='(\/[A-Za-z0-9_\-\.]+)*\/?'
#the complete regex
master_regex="^$user_regex\@$host_regex\:$path_regex\$"
Это дает модульность, чтобы проверить ваши детали позже, если это будет необходимо. Чтобы включить IP-адреса в сопоставлении, добавьте 0-9
к двум первым частям совпадения регулярного выражения хоста.