3

私は以下のようなasp.netmvcのjQueryで以下のような電子メールを検証しようとしました

<script type="text/javascript">
   function validateEmail(sEmail) {
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (filter.test(sEmail)) {
        return true;
    }
    else {
        return false;
    }
      $(document).ready(function() {
   $('#create').click(function() {
        var sEmail = $('#UserName').val();
        if ($.trim(sEmail).length == 0) {
            alert('Please enter valid email address');
            e.preventDefault();
        }
        if (validateEmail(sEmail)) {
            alert('Email is valid');
        }
        else {
            alert('Invalid Email Address');
            e.preventDefault();
        }
    });
});
    });
</script>

ビューのレンダリング中に、その正規表現で予期しない文字'\'のコンパイルエラーが発生しました。このエラーを解決するにはどうすればよいですか?

4

2 に答える 2

9

同じエラーがあります。これが答えです。わたしにはできる。@の代わりに@@を使用する必要があります。

あなたの場合、それは次のとおりです。

var filter = /^([\w-\.]+)@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
于 2013-12-11T10:29:24.617 に答える
0

中かっこには奇妙な点があります。具体的には、validateEmail関数を正しく閉じていません。修正されたJavascriptコードは次のとおりです。

    function validateEmail(sEmail) {
        var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
        if (filter.test(sEmail)) {
            return true;
        }
        else {
            return false;
        }
    }
    $(document).ready(function() {

        $('#create').click(function() {
            var sEmail = $('#UserName').val();
            if ($.trim(sEmail).length == 0) {
                alert('Please enter valid email address');
                e.preventDefault();
            }
            if (validateEmail(sEmail)) {
                alert('Email is valid');
            }
            else {
                alert('Invalid Email Address');
                e.preventDefault();
            }
        });
    });

編集:また、無関係ですが、testはブール値を返すため、validateEmail関数をもう少し簡潔にすることができます。次のように参照してください。

    function validateEmail(sEmail) {
        var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;

        return filter.test(sEmail);
    }
于 2013-02-11T15:28:20.683 に答える