加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 在Scala中验证电子邮件一行

发布时间:2020-12-14 06:22:12 所属栏目:百科 来源:网络整理
导读:在我的代码中添加简单的电子邮件验证,我创建了以下函数: def isValid(email: String): Boolean = if("""(?=[^s]+)(?=(w+)@([w.]+))""".r.findFirstIn(email) == None)false else true 这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之
在我的代码中添加简单的电子邮件验证,我创建了以下函数:
def isValid(email: String): Boolean = if("""(?=[^s]+)(?=(w+)@([w.]+))""".r.findFirstIn(email) == None)false else true

这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob @testmymail也会返回true.

我可能在这里很傻……

当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题. findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapplySeq并检查它是否返回Some List
def isValid(email: String): Boolean =
   if("""(?=[^s]+)(?=(w+)@([w.]+))""".r.findFirstIn(email) == None)false else true

def isValid2(email: String): Boolean =
  """(w+)@([w.]+)""".r.unapplySeq(email).isDefined

isValid("test@gmail.com")                        //> res0: Boolean = true

isValid("t es t@gmailcom")                       //> res1: Boolean = true

isValid("b ob @tes tmai l.com")                  //> res2: Boolean = false

isValid2("test@gmail.com")                       //> res3: Boolean = true

isValid2("t es t@gmailcom")                      //> res4: Boolean = false

isValid2("b ob @tes tmai l.com")                 //> res5: Boolean = false

// but those don't work for both:
// I recommend you using a proper regex pattern to match emails
isValid("test@gma.i.l.c.o.m")                    //> res6: Boolean = true

isValid("test@gmailcom")                         //> res7: Boolean = true

isValid2("test@gma.i.l.c.o.m")                   //> res8: Boolean = true

isValid2("test@gmailcom")                        //> res9: Boolean = true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读