首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript测试RegEx始终返回false

JavaScript测试RegEx始终返回false
EN

Stack Overflow用户
提问于 2019-04-26 23:42:43
回答 2查看 41关注 0票数 0

我正在尝试验证一个字符串是否看起来像一个有效的电子邮件地址,但是无论我输入什么,函数总是返回false

代码语言:javascript
复制
function looksLikeMail(str) {
      var patt = new RegExp(/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i);
      return patt.test(str);
    }

var c1;
var c2;
var error = false;
c1 = document.getElementById("t8").value;
c2 = document.getElementById("t9").value;
if (document.getElementById("t8").value != "" || document.getElementById("t9").value != ""){
     if (document.getElementById("t8").value != ""){
     var validE;
     validE = looksLikeMail((String)(t8));
     if (!validE){
        error = true;
        alert("invalid email address");
       }
}

HTML

代码语言:javascript
复制
<div class="form-row">
  <label class="col align-self-center">&nbsp;<b>email (at least one)</b></label>
  </div>


  <div class="form-row">
  <div class="col-md-6 offset-md-3">
  <label for="inputEmail4">email-1</label>
  <input type="email" class="form-control" id="t8" placeholder="email">
  </div>

  <div class="col-md-6 offset-md-3">
  <label for="inputEmail5">email-2</label>
  <input type="email" class="form-control" id="t9" placeholder="email">
  </div>
  </div>
EN

回答 2

Stack Overflow用户

发布于 2019-04-26 23:49:49

您的looksLikeMail没有问题(‘a@a.com’返回true )。

不过,JS的其余部分似乎有问题。首先,您的变量t8从未定义过。此外,(String)是无效的语法。要在JS中强制转换,您可以改为使用String(t8)。也就是说,这是不必要的,因为input.value无论如何都会返回一个字符串。

由于您似乎不熟悉JS,我也做了一些小的清理工作:

代码语言:javascript
复制
let t8 = document.getElementById("t8").value;
if (t8) {
     let validE = looksLikeMail(t8);
     if (!validE){
        error = true;
        alert("invalid email address");
     }
}
票数 1
EN

Stack Overflow用户

发布于 2019-04-26 23:56:33

试试这段代码

代码语言:javascript
复制
        function looksLikeMail(str){
            var regex = /^(([^<>()\[\]\\.,;:\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 regex.test(str);
        }

        looksLikeMail("aa@aa.cc");// true
        looksLikeMail("aa@aa.c");// false
        looksLikeMail("demo_a-su@abcca.cd.bc");// true

您还可以在此处测试正则表达式

https://regex101.com/r/777dwJ/1

正则表达式归功于。https://stackoverflow.com/a/46181/5708097

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55870950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档