在我的代码中添加简单的电子邮件验证,我创建了以下函数: 
  
  
 
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