Module: PrivacyMaskTools::PhoneMatcher
- Included in:
- Base
- Defined in:
- lib/privacy_mask_tools/phone_matcher.rb
Overview
電話番号判定用モジュール
Constant Summary collapse
- MOBILE_NUMBER_REGEXP =
携帯番号 ソフト判定用正規表現
/([((]?([00][7-97-9][00])[-ー()()・ ]*([0-90-9]{4})[-ー()()・ ]*([0-90-9]{4})(?![0-90-9]))/
- JARGON_MOBILE_NUMBER_REGEXP =
携帯番号 ハード判定用正規表現
/([((]?([00oO〇十]?[7-97-9⑦-⑨七-九][00oO〇十])[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{4})[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{4})(?![0-90-9]))/
- PHONE_NUMBER_REGEXP =
固定電話(IP電話込) ソフト判定用正規表現
/([((]?(([00][334466])[-ー()()・ ]*([0-90-9]{4})|([00][1-91-9]{2})[-ー()()・ ]*([0-90-9]{3})|([00][1-91-9]{2}[0-90-9])[-ー()()・ ]*([0-90-9]{2})|([00][1-91-9]{2}[0-90-9]{2})[-ー()()・ ]*([0-90-9])|([00][55][00])[-ー()()・ ]*([0-90-9]{4}))[-ー()()・ ]*([0-90-9]{4})(?![0-90-9]))/
- JARGON_PHONE_NUMBER_REGEXP =
固定電話(IP電話込) ハード判定用正規表現
/([((]?(([00oO〇十][33三参③44四④66六⑥])[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{4})|([00oO〇十][1-91-9一-九四①-⑨壱弐参]{2})[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{3})|([00oO〇十][1-91-9一-九四①-⑨壱弐参]{2}[0-90-9oO①-⑨一-四〇壱弐参])[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{2})|([00oO〇十][1-91-9一-九四①-⑨壱弐参]{2}[0-90-9oO①-⑨一-四〇壱弐参]{2})[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参])|([00oO〇十][55五⑤][00oO〇十])[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{4}))[-ー()()・ ]*([0-90-9oO①-⑨一-四〇壱弐参]{4})(?![0-90-9]))/
Instance Method Summary collapse
-
#has_jargon_mobile_number?(text) ⇒ Boolean
携帯番号が含まれているかチェックします 隠語らしきもの(漢数字・丸付き数字・〇など)も判定します そのため正常な文字列も置換する確率が高くなります 現時点ではテストが不十分です.
-
#has_jargon_phone_number?(text) ⇒ Boolean
固定電話番号が含まれているかチェックします.
-
#has_mobile_number?(text, jargon = false) ⇒ Boolean
携帯番号が含まれているかチェックします jargonをfalseにした場合は判定条件はゆるめです そのため、漢数字や丸数字はパスしてしまいます ただし、セパレータ部分は強めの制限となっており、スペースも許容しています そのため“000 9999 9999”もマッチします.
-
#has_phone_number?(text, jargon = false) ⇒ Boolean
固定電話番号が含まれているかチェックします.
-
#mobile_number_masking(text, word = "*", jargon = false) ⇒ String
携帯番号らしき箇所をマスキングします wordに2文字以上を与えるとマッチした部分をその2文字で置き換えます wordが1文字だとマッチした部分それぞれの数値をその文字で置き換えます.
-
#phone_nomber_masking(text, word = "*", jargon = false) ⇒ String
固定電話らしき箇所をマスキングします.
-
#pick_mobile_number(text, jargon = false) ⇒ Array
text中に含まれる携帯番号を抽出します.
-
#pick_phone_number(text, jargon = false) ⇒ Array
text中に含まれる固定電話番号を抽出します.
Instance Method Details
#has_jargon_mobile_number?(text) ⇒ Boolean
携帯番号が含まれているかチェックします
隠語らしきもの(漢数字・丸付き数字・〇など)も判定します
そのため正常な文字列も置換する確率が高くなります
現時点ではテストが不十分です
41 42 43 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 41 def has_jargon_mobile_number?(text) has_mobile_number?(text,true) end |
#has_jargon_phone_number?(text) ⇒ Boolean
固定電話番号が含まれているかチェックします
基本的な仕様はhas_jargon_mobile_number?と同一です
65 66 67 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 65 def has_jargon_phone_number?(text) has_phone_number?(text, true) end |
#has_mobile_number?(text, jargon = false) ⇒ Boolean
携帯番号が含まれているかチェックします
jargonをfalseにした場合は判定条件はゆるめです
そのため、漢数字や丸数字はパスしてしまいます
ただし、セパレータ部分は強めの制限となっており、スペースも許容しています
そのため"000 9999 9999"もマッチします
28 29 30 31 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 28 def has_mobile_number?(text, jargon=false) reg = jargon ? JARGON_MOBILE_NUMBER_REGEXP : MOBILE_NUMBER_REGEXP !text.match(reg).nil? end |
#has_phone_number?(text, jargon = false) ⇒ Boolean
固定電話番号が含まれているかチェックします
基本的な仕様はhas_mobile_number?と同一です
53 54 55 56 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 53 def has_phone_number?(text, jargon=false) reg = jargon ? JARGON_PHONE_NUMBER_REGEXP : PHONE_NUMBER_REGEXP !text.match(reg).nil? end |
#mobile_number_masking(text, word = "*", jargon = false) ⇒ String
携帯番号らしき箇所をマスキングします
wordに2文字以上を与えるとマッチした部分をその2文字で置き換えます
wordが1文字だとマッチした部分それぞれの数値をその文字で置き換えます
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 81 def mobile_number_masking(text, word="*", jargon=false) reg = jargon ? JARGON_MOBILE_NUMBER_REGEXP : MOBILE_NUMBER_REGEXP text.scan(reg).each do |f| if word.size >= 2 text = text.sub(f[0], word) else replace_word = f[0].dup f.each_with_index do |g, index| next if index == 0 replace_word.sub!(g, word*g.size) end text = text.sub(f[0], replace_word) end end text end |
#phone_nomber_masking(text, word = "*", jargon = false) ⇒ String
固定電話らしき箇所をマスキングします
基本的な仕様はmobile_number_maskingと同一です
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 106 def phone_nomber_masking(text, word="*", jargon=false) reg = jargon ? JARGON_PHONE_NUMBER_REGEXP : PHONE_NUMBER_REGEXP text.scan(reg).each do |f| if word.size >= 2 text = text.sub(f[0], word) else replace_word = f[0].dup f.each_with_index do |g, index| next if index <= 1 or g.nil? replace_word.sub!(g, word*g.size) end text = text.sub(f[0], replace_word) end end text end |
#pick_mobile_number(text, jargon = false) ⇒ Array
text中に含まれる携帯番号を抽出します
136 137 138 139 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 136 def pick_mobile_number(text, jargon=false) reg = jargon ? JARGON_MOBILE_NUMBER_REGEXP : MOBILE_NUMBER_REGEXP [].tap { |o| text.scan(reg).each { |f| o << f[0] } } end |
#pick_phone_number(text, jargon = false) ⇒ Array
text中に含まれる固定電話番号を抽出します
127 128 129 130 |
# File 'lib/privacy_mask_tools/phone_matcher.rb', line 127 def pick_phone_number(text, jargon=false) reg = jargon ? JARGON_PHONE_NUMBER_REGEXP : PHONE_NUMBER_REGEXP [].tap { |o| text.scan(reg).each { |f| o << f[0] } } end |