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


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];
}