8

私はJavaScriptを初めて使用し、インターネットでこのJavaScriptコードを見つけて、指定された電子メールを検証します(コードに問題はありません)-

<html>
<h2>Email Validation</h2>
<script language = "Javascript">
function checkEmail(emailId) {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailId)){
document.write("You have entered valid email.");
return true;
}    
return false;
}

function ValidateEmail(){
    var emailID=document.form.email;

    if ((emailID.value==null)||(emailID.value=="")){
        alert("Please Enter your Email ID")
        emailID.focus()
        return false
    }

    if (checkEmail(emailID.value)==false){
        emailID.value=""
        alert("Invalid Email Adderess");
        emailID.focus()
        return false
    }
        alert('valid');
        return true
 }
</script>

<form name="form" method="post" onSubmit="return ValidateEmail()">    
Enter an Email Address : <input type="text" name="email" size="30"><br>    
<input type="submit" name="Submit" value="Submit">    
</form>

</html>

コードに問題はありませんが、どういうわけか正規表現の/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/意味を理解できませんでした。正規表現のすべての部分が何を意味するのかわかりません。教えてください。

4

8 に答える 8

19
  1. 2つのスラッシュ/.../にはregexeが含まれています。

  2. 先頭の^と末尾の$は、それぞれ入力文字列の最初と最後に一致します。つまり、入力文字列の一部ではなく、入力文字列全体がこのregexeと一致する必要があります。

  3. \ w +は、1つ以上の単語文字(az、AZ、0-9およびアンダースコア)に一致します。

  4. [.-]は文字に一致します。また -。を使用する必要があります。表現します 。なので 。regexeでは特別な意味があります。\はエスケープコードと呼ばれ、次の文字の元のリテラルの意味を復元します。

  5. [.-]?[.-]の0または1回の出現に一致します。

  6. ここでも、\w+は1つ以上の単語文字に一致します。

  7. ([.-]?\ w +)*は、0回以上の[.-]?\w+のオカレンスに一致します。

  8. 部分式\w+([.-]?\ w +)*は、@記号の前の電子メールのユーザー名と一致させるために使用されます。少なくとも1つの単語文字(az、AZ、0-9およびアンダースコア)で始まり、その後にさらに単語文字または。が続きます。また -。ただし、。または-単語文字(az、AZ、0-9およびアンダースコア)が後に続く必要があります。つまり、文字列に「..」、「-」、「.-」、または「-。」を含めることはできません。有効な文字列の例は「a.1-2-3」です。

  9. @はそれ自体と一致します。

  10. この場合も、部分式\ w +([.-]?\ w +)*を使用して、上記のユーザー名と同じパターンで電子メールドメイン名を照合します。

  11. 部分式。\w{2,3}は。と一致します。その後に2つまたは3つの単語文字が続きます。たとえば、「。com」、「。edu」、「。us」、「。uk」、「。co」などです。

  12. (。\ w {2,3})+は、上記の部分式が1回以上発生することを指定します。たとえば、「。com」、「。co.uk」、「。edu.sg」などです。

参照

于 2013-02-22T05:00:47.500 に答える
3

ここで試してみてくださいREGEX

あなたは詳細な説明を見つけることができます。

于 2013-02-22T04:57:29.543 に答える
3

正規表現の内訳は次のとおりです。


/^ =>行の先頭

\w+=> 1回以上繰り返される単語(文字、数字、アンダースコア)

([\.-]?\w+)*=> 0回以上繰り返すことができる[オプションのピリオド(。)またはダッシュ(-)の後に1回以上繰り返される任意の単語]グループ

@\w+=>アットマーク(@)の後に1回以上繰り返される単語が続く

([\.-]?\w+)*=> 0回以上繰り返すことができる[1回以上繰り返される任意の単語の後に続くオプションのピリオドまたはダッシュ]グループ

(\.\w{2,3})+=> 1回以上繰り返すことができる[ 2〜3繰り返すことができる任意の単語が続く期間]グループ

$/=>行の終わり


ちなみに、これはCodularで利用できる正規表現の非常に優れた入門です。

于 2013-02-22T05:11:12.413 に答える
3

これを試して

E-mail: <input type="email" name="usremail">

それは私のために働いた

于 2013-03-21T12:37:38.320 に答える
2

どうぞ。正規表現のビジュアライザー

正規表現ビジュアライザーと正規表現のJS Fiddle 説明

于 2013-02-22T04:56:11.653 に答える
2

この検証コードは、電子メールアドレスに対して間違っています。特に、first +last@domain.comの形式のアドレスは許可されません。これは、多くの商用Webサイトで見られる広範なエラーです(ただし、stackoverflowではありません-おめでとうございます!)。

于 2016-03-29T13:52:10.570 に答える
1
/^(\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+[,;]?[ ]?)+$/

この小さな美しさにより、1つ以上の電子メールアドレスを文字列に入力できます。最後にコンマまたはセミコロンを付け、その後にオプションのスペースを続けます。:)

于 2013-05-19T13:03:44.593 に答える
0
function validchat(){
    $('#btn-input-email').blur(function() {
        if($(this).val() != '') {
            var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
            if(pattern.test($(this).val())){
                $(this).css({'border' : '1px solid #569b44'});
                $('#valid').text('');
            } else {
                $(this).css({'border' : '1px solid #ff0000'});
                $('#valid').text('Не верно');
            }
        } else {
            $(this).css({'border' : '1px solid #ff0000'});
            $('#valid').text('Поле email не должно быть пустым');
        }
    });
    $("#btn-input-text").blur(function() {
        var textlength = $(this).val().trim().length;
        if( textlength < 2 ){
            $(this).css({'border' : '1px solid #ff0000'});
            $('#validtext').text('Минимум 2 символ');
        }else{
            $(this).css({'border' : '1px solid #569b44'});
            $('#validtext').text('');
        }
    });
    var valid = $('#valid').text();
    var validtext = $('#validtext').text();
    if((!valid || valid == '') && (!validtext || validtext == '')){
        return true;
    }
}
validchat();
function AjaxChat () {
    $('#btn-input-email , #btn-input-text').blur();
    var valid = validchat();
    if(valid){
        var email = $('#btn-input-email').val();
        var text  = $('#btn-input-text').val();

        var data = {
            email:email,
            text:text
        }

        $.ajax({
            url: location.origin+"/chat_block.php",
            //dataType: "json", ////Тип данных
            type: "POST",
            async: false,
            data: data,
            success: function(html) {
                if(!html || html == 'null') AjaxChat ();
                if (jQuery.html != "") {
                    var b_chat = $('.chat-customer').html();
                    var chat   = 'Вы: ';
                    var obj = $.parseJSON(html);
                    chat += '<span>';
                    chat += obj['text'];
                    chat += '</span>';
                    chat += '<br /><br />';
                    $('.chat-customer').html(b_chat + chat);
                    $('#btn-input-text , #btn-input-email').val("");
                }
            },
            error: function() {
                //cosole.log('No result');
            }
        });
        $('#btn-input-email').remove();
    }
}
于 2015-03-28T10:22:43.380 に答える