我需要进行模型验证来阻止个人电子邮件帐户。
我有以下内容:
PERSONAL_DOMAINS = %w[
yahoo.
ymail
verizon
]
正则表达式验证:
:format => {
:without => /#{PERSONAL_DOMAINS.map{|a| Regexp.quote(a)}.join('|')}/
}
yahoo 末尾有一个点的原因是允许 yahoo-inc.com 但阻止所有个人域,如 yahoo.com、yahoo.fr、yahoo.uk 等...
此正则表达式失败并导致 yahoo-inc.com 被拒绝...有关如何更新此以使上述用例通过的任何建议吗?谢谢
最佳答案
尝试在不使用 Rails 的情况下进行匹配,以帮助缩小发生情况的范围:
PERSONAL_DOMAINS_REGEXP = /#{PERSONAL_DOMAINS.map{|a| Regexp.quote(a)}.join('|')}/
=> /yahoo\.|ymail|verizon/
"yahoo-inc.com".match(PERSONAL_DOMAINS_REGEXP)
=> nil
"yahoo.com".match(PERSONAL_DOMAINS_REGEXP)
=> #<MatchData "yahoo.">
关于ruby-on-rails - 如何制作正则表达式来匹配所有互联网域(无论扩展名如何),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003749/