Module: PrivacyMaskTools::EmailMatcher
- Included in:
- Base
- Defined in:
- lib/privacy_mask_tools/email_matcher.rb
Overview
Email判定用モジュール
Instance Method Summary collapse
-
#domain_regexp ⇒ String
メールアドレスのドメイン部の正規表現文字列 このままだと文字列ですので、Regexp.new等で正規表現に変換する必要があります.
-
#has_rfc_email?(text) ⇒ Boolean
RFC5322形式に近いメールアドレスが存在するかチェックします.
-
#make_rfc_regexp ⇒ Object
RFC5322 に対応した正規表現を生成します 概ね対応しているレベルであり、完全に対応しているわけではありません.
-
#pick_rfc_email(text) ⇒ Array
RFC5322形式に近いメールアドレスを抽出します.
-
#quoted_regexp ⇒ String
メールアドレスのローカル部において ダブルクウォーテーションで囲まれている部分の正規表現文字列 このままだと文字列ですので、Regexp.new等で正規表現に変換する必要があります.
-
#quoted_special_char ⇒ String
メールアドレスのローカル部のダブルクウォーテーションで囲まれた部分で使用可能な特殊記号.
-
#rfc_email_masking(text, words = "***") ⇒ String
RFC5322形式に近いメールアドレスをマスキングします.
-
#special_char ⇒ String
メールアドレスのローカル部で使用可能な特殊記号.
-
#unquoted_regexp ⇒ String
メールアドレスのローカル部の正規表現文字列 このままだと文字列ですので、Regexp.new等で正規表現に変換する必要があります.
Instance Method Details
#domain_regexp ⇒ String
メールアドレスのドメイン部の正規表現文字列
このままだと文字列ですので、Regexp.new等で正規表現に変換する必要があります
71 72 73 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 71 def domain_regexp "((\w+\-+[^_])|(\w+\.[-a-z0-9]*))*([-a-z0-9\.]{1,63})\.[a-z]{2,6}(?:\.[a-z]{2,6})?" end |
#has_rfc_email?(text) ⇒ Boolean
RFC5322形式に近いメールアドレスが存在するかチェックします
9 10 11 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 9 def has_rfc_email?(text) !text.match(make_rfc_regexp).nil? end |
#make_rfc_regexp ⇒ Object
RFC5322 に対応した正規表現を生成します
概ね対応しているレベルであり、完全に対応しているわけではありません
validates_email_format_ofを参考にしています TODO chache
38 39 40 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 38 def make_rfc_regexp Regexp.new('(('+ unquoted_regexp + '|' + quoted_regexp + '+)@(' + domain_regexp + '))') end |
#pick_rfc_email(text) ⇒ Array
RFC5322形式に近いメールアドレスを抽出します
16 17 18 19 20 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 16 def pick_rfc_email(text) [].tap { |o| text.scan(make_rfc_regexp) { |f| o << f[0] } } end |
#quoted_regexp ⇒ String
メールアドレスのローカル部において ダブルクウォーテーションで囲まれている部分の正規表現文字列
このままだと文字列ですので、Regexp.new等で正規表現に変換する必要があります
64 65 66 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 64 def quoted_regexp "\"[0-9A-Za-z#{special_char}#{quoted_special_char}\.]*\"" end |
#quoted_special_char ⇒ String
メールアドレスのローカル部のダブルクウォーテーションで囲まれた部分で使用可能な特殊記号
50 51 52 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 50 def quoted_special_char Regexp.escape('()<>[]:;@, ') end |
#rfc_email_masking(text, words = "***") ⇒ String
RFC5322形式に近いメールアドレスをマスキングします
26 27 28 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 26 def rfc_email_masking(text, words="***") text.dup.tap {|o| text.scan(make_rfc_regexp) { |f| o.sub!(f[0], words) } } end |
#special_char ⇒ String
メールアドレスのローカル部で使用可能な特殊記号
44 45 46 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 44 def special_char Regexp.escape('!#$%&\'*-/=?+-^_`{|}~') end |
#unquoted_regexp ⇒ String
メールアドレスのローカル部の正規表現文字列
このままだと文字列ですので、Regexp.new等で正規表現に変換する必要があります
57 58 59 |
# File 'lib/privacy_mask_tools/email_matcher.rb', line 57 def unquoted_regexp "([[0-9A-Za-z]#{special_char}]+[\.]+)*[[0-9A-Za-z]#{special_char}+]+" end |