【发布时间】: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