3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メモ:住所から番地以下を除去する

Last updated at Posted at 2019-08-16

この記事は

  • 住所文字列から番地以下を除去して都道府県市区町村のみにしたメモです

コード

  • いきなりですが結論です
shrink_address.js
  function shrinkAddress(address){
    // nullは空文字で返却
    if(!address) return ""

    // 番地っぽい文字列を抽出する正規表現
    let pattern = /([0-90-9]+|[一二三四五六七八九十百千万]+)*(([0-90-9]+|[一二三四五六七八九十百千万]+)|(丁目|丁|番地|番|号|-|‐|ー|−|の|東|西|南|北){1,2})*(([0-90-9]+|[一二三四五六七八九十百千万]}+)|(丁目|丁|番地|番|号){1,2})/
    let result = address.match(pattern)

    // マッチしたら番地よりも前の文字列を返却
    if(!!result){
      return address.substring(0, result['index'])
    } else {
      return address
    }
  }

テスト

  • 半角、全角、漢数字、ハイフン、丁目などに耐久しています
  • 地名に漢数字が混じっていても大丈夫でした
shrinkAddress("東京都中央区銀座1-2-3")
"東京都中央区銀座"
shrinkAddress("東京都中央区銀座1−2−3")
"東京都中央区銀座"
shrinkAddress("東京都中央区銀座1の2の3")
"東京都中央区銀座"
shrinkAddress("東京都中央区銀座一丁目二番三号")
"東京都中央区銀座"
shrinkAddress("東京都北区十条1-2-3")
"東京都北区十条"
shrinkAddress("高知県四万十市中村1-2-3ハイツ高知102")
"高知県四万十市中村"

参照

  • 下記記事をものすごく参考にしましたので、正規表現の詳細はこちらの解説をご参照していただければと
    • Rubyの埋め込み変数は今回は全て展開しています
  • https://qiita.com/YSRKEN/items/5371e67950425ace6a73
3
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?