1
0

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 3 years have passed since last update.

フォームの住所項目で、都道府県とそれ以外で分割する

Last updated at Posted at 2020-11-25

1.フォームの住所入力欄は1つのテキストフィールドだが、
DBに格納するデータとしては、都道府県とそれ以外に分けたい時。
(1はOKだが、都道府県から始まっていることが前提。)

form_input_address_1.js
address = '大阪府大阪市中央区〇〇町△番地';
address.replace(/^(.{2}[都道府県]|.{3})(.+)/, "$1 $2").split(' ');
// ['大阪府','大阪市中央区〇〇町△番地']
address_data_1 = address[0]; // '大阪府'
address_data_2 = address[1]; // '大阪市中央区〇〇町△番地'

2.住所が都道府県から始まっていない時。
(2はNG:都道府県のデータを格納したい変数に市以下が格納されてしまっている。)

form_input_address_2.js
address = '大阪市中央区〇〇町△番地';
address.replace(/^(.{2}[都道府県]|.{3})(.+)/, "$1 $2").split(' ');
// ['大阪市中央区〇〇町△番地']
address_data_1 = address[0]; // '大阪市中央区〇〇町△番地'
address_data_2 = address[1]; // ''

3.住所が都道府県から始まっていない時。
(2を配列の要素数で条件分岐。都道府県がなれけば空白にする。)

form_input_address_3.js
// 住所が都道府県から始まっている場合
address = '大阪府大阪市中央区〇〇町△番地';
address.replace(/^(.{2}[都道府県]|.{3})(.+)/, "$1 $2").split(' ');
// ['大阪府','大阪市中央区〇〇町△番地']
if (address.length === 1) {
  address_data_1 = '';
  address_data_2 = address[0];
} else {
  address_data_1 = address[0]; // '大阪府'
  address_data_2 = address[1]; // '大阪市中央区〇〇町△番地'
}

// 住所が都道府県から始まっていない場合
address = '大阪市中央区〇〇町△番地';
address.replace(/^(.{2}[都道府県]|.{3})(.+)/, "$1 $2").split(' ');
// ['大阪市中央区〇〇町△番地']
if (address.length === 1) {
  address_data_1 = ''; // ''
  address_data_2 = address[0]; // '大阪市中央区〇〇町△番地'
} else {
  address_data_1 = address[0];
  address_data_2 = address[1];
}
1
0
2

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?