Dec 18, 2019/mod: Dec 18,2019 - 1 min read - プログラミング
Rubyでメールアドレスの検証
ブログの引っ越しついでに、昔書いた記事で人気のあったものを。。
手抜きじゃないの?
Rubyでメールアドレスの検証を行う方法です! サンプルコードのみなので、内容はコードを読んでみてください!手抜きじゃないの?
require 'resolv'
require 'pp'
class MailAddressValidator
def self.validate(address)
return validate_by_regex(address) && validate_by_MX(address)
end
def self.validate_by_regex(address)
addr_spec = %r{^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$}
address =~addr_spec
end
def self.validate_by_MX(address)
mxdomain = address[/[^@]+$/]
Resolv::DNS.new.getresource(mxdomain,Resolv::DNS::Resource::IN::MX) rescue nil
end
private_class_method :validate_by_regex, :validate_by_MX
end
require File.dirname(__FILE__) + '/mail_address_validator'
print (MailAddressValidator.validate('hogefuga@hogefugadennnenn.naiyo')) 'ok':'ng' #=> ng
実際はcgi化してjavascriptから呼んでる
function validateMailAddress(addr_string){
var req = getXmlHttpRequest();
req.open('GET',"mail_address_validator.cgi?addr=" + addr_string, false);
req.send(null);
resultText = req.responseText;
if(resultText != "ok"){
return false;
}
return true;
}
comments powered by Disqus