訂正された投稿
@stribizhevは正しいです。bash 正規表現では先読みを使用できません。そのためにgrepを使用しました。
#!/bin/bash
fqdn=$1
result=`echo $fqdn | grep -P '(?=^.{1,254}$)(^(?>(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[a-zA-Z]{2,})$)'`
if [[ -z "$result" ]]
then
echo "$fqdn is NOT a FQDN"
else
echo "$fqdn is a FQDN"
fi
exit
@stribizhev と < +OnlineCop > および < tureba > ( http://webchat.freenode.net/?nick=regex101 ) の助けに感謝します。
元の投稿
この正規表現を機能させて、文字列が有効な FQDN であるかどうかを評価しようとしていますが、成功しませんでした。私もさまざまな検索を行いましたが、成功しませんでした。
たとえば、 http://regexlib.com/REDetails.aspx?regexp_id=1319にある正規表現をコピーして この方法を試しましたが、うまくいきません。何が間違っている可能性がありますか?
#!/bin/bash
fqdn=$1
if [[ "$fqdn" =~ (?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[a-zA-Z]{2,})$) ]]
then
echo "$fqdn is a FQDN"
else
echo "$fqdn is NOT a FQDN"
fi
exit