【问题标题】:Regex email : number + format of email in ruby正则表达式电子邮件:ruby 中电子邮件的数字 + 格式
【发布时间】:2020-04-30 05:28:50
【问题描述】:

我的数据库中有一个字段电子邮件,也调用了应该具有这种格式的电子邮件:123456789@pac.gmail.com 其中123456789 应该是数字,长度为 9。

在我的模型中,我尝试使用以下代码为我的用户设置格式:

class Email < ApplicationRecord
    EMAIL_PATTERN = /^[0-9]+/@pac.gmail.com
    LENGTH = 9
    validates :email, presence: true, format: EMAIL_PATTERN, length: LENGTH
end

但是我有一个错误unexpected tIVAR, expecting end,但我不明白为什么我的代码中应该有一个END,因为我没有启动任何循环或其他东西, 有谁知道如何以正确的方式格式化电子邮件以及为什么我会出现这种错误?

【问题讨论】:

  • 检查正则表达式分隔符的位置。
  • /^[0-9]+#{Regexp.escape('@pac.gmail.com')}$/,或手动转义正则表达式特殊字符/^[0-9]+@pac\.gmail\.com$/。请注意,^$ 在 Ruby 中始终匹配行的开头和结尾。使用\A\z 匹配字符串的开头和结尾。目前,您的正则表达式是 /^[0-9]+/ 后跟一个实例变量 @pac ,此时 Ruby 并不期待。

标签: ruby-on-rails regex ruby model-view-controller


【解决方案1】:

无需单独检查长度;你可以在你的正则表达式中做到这一点。如果我理解正确,您要确保有 9 位数字后跟 @pac.gmail.com。你可以这样做:

class Email < ApplicationRecord
  EMAIL_PATTERN = /\A[0-9]{9}@pac.gmail.com\z/
  validates :email, presence: true, format: EMAIL_PATTERN
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2012-01-02
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多