【问题标题】:Javascript multiple email regexp validationJavascript多电子邮件正则表达式验证
【发布时间】:2012-01-01 18:26:44
【问题描述】:

简单电子邮件的通常验证是:

/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/

这将验证电子邮件,如test@test.com

但是如何验证电子邮件是否是多个?

entry 1: test@test.com, test1@test.com, test2@test.com
entry 2: test@test.com , test1@test.com , test2@test.com
entry 3: test@test.com, test1@test.com , test2@test.com
entry 4: test@test.com

此电子邮件是用户可能输入的条目。也期望他们有时是 2 或 3 或 4 封或更多电子邮件。

感谢您的回答。

【问题讨论】:

    标签: javascript regex email email-validation


    【解决方案1】:

    用逗号分隔电子邮件并验证条目

    var x = getEmails();
    var emails = x.split(",");
    emails.forEach(function (email) {
      validate(email.trim());
    });
    

    getEmails() 在哪里从页面获取电子邮件,然后 validate 针对电子邮件运行您的正则表达式

    【讨论】:

      【解决方案2】:

      试试这个

          function validateEmails(string) {
              var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
              var result = string.replace(/\s/g, "").split(/,|;/);        
              for(var i = 0;i < result.length;i++) {
                  if(!regex.test(result[i])) {
                      return false;
                  }
              }       
              return true;
          }
      

      接受逗号和分号作为分隔符

      【讨论】:

        【解决方案3】:

        这是一个无需拆分的多邮件验证的正则表达式

        function validateMultipleEmails(string) {
            var regex = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+)+([;]([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+))*$/;
            return regex.test(string);
        }
        

        https://regex101.com/r/TUXLED/1

        【讨论】:

          【解决方案4】:

          您应该能够用逗号分隔条目,然后根据正则表达式测试各个电子邮件子条目。

          var valid = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
          var entries = entry.split(",");
          
          if(valid.test(entries[0]))...    //or however your testing against the regex
          

          您可能还想在测试任何已剥离的电子邮件子字符串之前修剪任何空白。

          【讨论】:

            【解决方案5】:

            试试这个jquery验证:

            jQuery.validator.addMethod("multiemail", function (value, element) {
                if (this.optional(element)) {
                    return true;
                }
                var emails = value.split(','),
                    valid = true;
                for (var i = 0, limit = emails.length; i < limit; i++) {
                    value = emails[i];
                    valid = valid && jQuery.validator.methods.email.call(this, value, element);
                }
                return valid;
            }, "Invalid email format: please use a comma to separate multiple email addresses.");
            

            【讨论】:

              【解决方案6】:

              function validateEmail(emailAddress) {
                var emailPattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
                return emailPattern.test(emailAddress);
              }
              
              function validate() {
                $("#result").text("");
                var email = $("#emailAddress").val();
                if (validateEmail(email)) {
                  $("#result").text(email + " validation successful");
                  $("#result").css("color", "white");
                } else {
                  $("#result").text(email + " validation failed");
                  $("#result").css("color", "red");
                }
                return false;
              }
              
              $("form").bind("submit", validate);
              .divSection{
                text-align: center; padding: 8%;
                }
              .pSection{
                border: none;    color: white;    padding: 10px 100px;    text-align: center;    text-decoration: none;    display: inline-block;    font-size: 24px;    margin: 3% 0%;    border-radius: 6px;    -webkit-transition-duration: 0.4s;   transition-duration: 0.4s;    font-family: Roboto-Regular,Helvetica,Arial,sans-serif; background-color: #4184f3; margin: auto;}
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
              
              <div class="divSection">
              <form action="dashboard/user/profile" method="POST">
                <input id="emailAddress" placeholder="Enter Email" value="shubham20.yeole@gmail.com">
                <input type='submit' value="check">
              </form>
                </div>
              
              <div class="divSection" >
              <p class="pSection" id='result'></p>
              </div>

              这是用于检查电子邮件是否包含多个 @ 字符的 javascript 代码

              var count=0;
              email = "shubham20.ye@ole@gmail.com";
              alert(email);
              for(i =0; i<email.length;i++){
              if(email.charAt(i) == "@"){
              count++;
              }}
              if(count>1){
                 alert("not ok")
              } else {
                  alert("ok")
              }
              

              另一种方法是使用电子邮件的标准模式

              var pattern= /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
              re.test(email);
              

              【讨论】:

                猜你喜欢
                • 2014-05-11
                • 2011-10-27
                • 2017-11-29
                • 1970-01-01
                • 2014-04-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多