rails和javascript的电子邮件验证正则表达式

时间:2017-04-28 16:12:28

标签: javascript ruby-on-rails regex

我有一个正则表达式,我改编自Michael Hartl的轨道书,我用来验证电子邮件地址

/\A([\w+\-]\.?)+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i

我想在javascript中使用它进行验证,但它在那里不起作用,我似乎无法找出原因。我只是在这里转动轮子

所以上面的一个在Rails中工作,但在JS中不起作用。我已经找到了可以在JS中使用的其他表达式,但是我想尝试使用相同的表达式来保持它的一致性。

为了澄清,这是铁路方面:

email = "test@test.com"

return /\A([\w+\-]\.?)+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i

这会返回true

并且在JS方面:

email = "test@test.com"

return /^\A([\w+\-]\.?)+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i.test( email );

这会返回false

任何指针?

1 个答案:

答案 0 :(得分:0)

根据@WiktorStribiżew的评论,缺少的​​部分是改变正则表达式语法以使用JS,就像这样

module RouteModule

    def self.user_has_active_chocolate(c_id, u_id)
        chocolate_id = c_id
        user_id = u_id
    unless UserChocolate.where(id: chocolate_id).empty?
      if UserChocolate.where(id: chocolate_id).last.active?
        true
      else
        false
        # BREAKS OVER HERE...
        redirect_to "/user/new-chocolate/#{user_id}"
      end
    else
      false
      redirect_to "/admin"
    end
  end

end

我拿出了\ A和\ z,分别用\ ^和$替换了