【问题标题】:Javascript Regex Form validation returning errorJavascript 正则表达式表单验证返回错误
【发布时间】:2019-03-23 05:56:39
【问题描述】:

我一直在尝试使用这些代码行验证我的表单电子邮件输入。

function validate() {
  var emailFirst = document.getElementById('email1');
  var emailFirstRGex = /^(([^<>()[\]\\.,;:\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,}))$/;
  var emailFirstTest = emailFirstRGex.test(emailFirst);

  if (emailFirstTest === false) {

  alert('hello20');
}
   }

我的表格

&lt;form class="needs-validation" novalidate method="POST" action="nomination2.php" onsubmit="validate()"&gt;

我不断收到 hello20 响应。同时,我已经在控制台上针对电子邮件尝试了这个正则表达式,没有错误。我该如何解决?

【问题讨论】:

    标签: javascript php regex forms validation


    【解决方案1】:

    emailFirstTest 在函数内部声明,因此在函数外部检查它意味着它超出范围并且不存在。

    只需在你的函数上方定义它:

    var emailFirstTest  = '';
    
    function validate() {
      emailFirst = document.getElementById('email1');
      var emailFirstRGex = /^(([^<>()[\]\\.,;:\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,}))$/;
      var emailFirstTest = emailFirstRGex.test(emailFirst);
    }
    

    【讨论】:

    • 我没有在函数外声明,我发错了问题,我已经更正了。
    • 控制台记录 emailFirst var
    • 我输入了正确的电子邮件,当我使用 console.log 时,它只是没有通过测试
    • emailFirstRGex 是一个字符串。这个.test() 函数来自哪里?
    • 试试var regex = new RegExp(emailFirstRGex ); var emailFirstTest = regex.test(emailFirst); 如果可行,我会更新我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多