2017-12-28 31 views
0

ランダムなサイトから電子メールの検証用のbashスクリプトを入手しました。うまくいきましたが、どのように動作するのかを知る必要がありますか?bashスクリプトを使用して電子メールIDを検証する方法は?

私はこのことを明確に説明していただき、誠にありがとうございます。

特に"[a-zA-Z0-9._%+ - ] + [[a-zA-Z0-9.-] +。[a-zA-Z] {2,4}"

#!/bin/sh 
while true; do 
read -p "Enter Email ID: " to_recipient 
if [[ "$to_recipient" =~ [a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4} ]] 
then 
    break; 
else 
    echo "Please enter a valid email address" 
fi 
done 

もう一度おねがいします!

+0

重要なバックスラッシュを削除しました。 – Cyrus

+2

私はそこから始めましょう:[Regular Expressions Tutorial - 正規表現を最大限に使いこなす方法を学ぶ](https://www.regular-expressions.info/tutorial.html)と[The Stack Overflow Regular Expressions FAQ ](http://stackoverflow.com/a/22944075/3776858) – Cyrus

+1

regexpの詳細については、http://www.rexegg.com/regex-quickstart.html –

答えて

1

短いバージョンは、これは正規表現一致の評価=~です。長い話は、正規表現の文法を理解して理解する必要があるということです。ここで

は、あなたが存在する特定の正規表現の簡単な説明です:正規表現で

[]範囲を定める「文字クラスは、」彼らは、クラス内の任意の文字と一致します。文字クラス定義内では、-を使用して文字の範囲を指定できます。つまり、最初の文字は[a-zA-Z0-9._%+-]で、小文字、大文字、任意の数字、または.%+、または-の文字クラスです。次に、そのクラス以外の+はKleene Plusであり、これは前の式(この場合は文字クラス)の1つ以上を示します。次に、次のビットは@の符号です。これは自明です。最後の2つのクラスはドメイン名と一致するはずで、SLD部分には英数字と.-を使用していますが、TLD部分では2〜4アルファのみの文字しか使用できません({N,M}構文は前の式の一致数の上限)。

電子メールの完全なRFCを使用して電子メールアドレスを実際に照合すると、実際にはここにあるものよりも複雑になります。これは実際に完全に有効な長いTLDと一致しません。 。

詳しく調べる:

  1. https://en.wikipedia.org/wiki/Kleene_plus
  2. https://en.wikipedia.org/wiki/Regular_expression
  3. https://www.ietf.org/rfc/rfc0822.txt?number=822

私はこのことができます願っています。

関連する問題