Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.03.2016, 12:30
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

Парсер фактического адреса
Задача - вытащить с помощью регулярного выражения из строки название города, улицы, дома, корпуса если есть, квартиры/офиса, почтового индекса.

Начал с такого кода
<head>
    <meta charset="UTF-8" />
    <title>test</title>
	<script src="http://code.jquery.com/jquery-latest.js"></script>
	
</head>

<body>

<textarea id="mytxt" style="width:400px;height:300px;">
</textarea>

<script>

var str='ИП фывфыв В.А., Индивидуальный предприниматель фыв выфв Алексеевна, ИНН 772603327122227226, КПП 42365, адрес 117525 г.Москва ул.Петрозаводская д.16 кв.12. '+
'кв.65; банк ЗАО «ыыыы» г.Москвы, БИК 3333333, к/с 44444, р/с 555555555 тел +73832331444 проверка';

re = /ИНН (\d+)/i;
found = str.match(re);
console.log('ИНН '+found[1]);

re = /КПП (\d+)/i;
found = str.match(re);
console.log('КПП '+found[1]);

re = /(?:р\/с|рс) (\d+)/i;
found = str.match(re);
console.log('р/с '+found[1]);

re = /(?:к\/с|кс|корр|корр\.|кор счет|кор счёт|кор\.счет|кор\.счёт) (\d+)/i;
found = str.match(re);
console.log('к/с '+found[1]);

re = /БИК (\d+)/i;
found = str.match(re);
console.log('БИК '+found[1]);

// АДРЕС !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//re = /д.(\d+\\d+) к.(\d+)/i;
//re = /д.(\d+\\\d+)/i;
//re = /г.(\D+) ул.(\D+) д.(\d+) к.(\d+)\s/i;
re = /г.(\D+) ул.(\D+) д.(\d+) кв.(\d+)/i;
found = str.match(re);
var addr='';
if (found) addr=found[0];
console.log('адрес '+addr);
$("#mytxt").val($("#mytxt").val()+'адрес: '+addr+'\n');
if (found[1]) $("#mytxt").val($("#mytxt").val()+'город: '+found[1]+'\n');
if (found[2]) $("#mytxt").val($("#mytxt").val()+'улица: '+found[2]+'\n');
if (found[3]) $("#mytxt").val($("#mytxt").val()+'дом: '+found[3]+'\n');
if (found[4]) $("#mytxt").val($("#mytxt").val()+'кв: '+found[4]+'\n');

re = /\+7(\d+)/i;
found = str.match(re);
console.log('телефон: '+found[1]);

</script>

</body>
Ответить с цитированием
  #2 (permalink)  
Старый 23.03.2016, 12:37
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

Хочу предусмотреть различные варианты... Например сейчас не получается вытащить номер дома если он с дробью. Например, "... д.16\2 ..."

Подскажите как надо модифицировать регулярное выражение.
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2016, 13:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

SKLNSK,
д\.([^\s]+)
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2016, 13:12
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

Не получилось "всё кроме пробела" (((\
Ошибку не выдает, но и дробь не берет.

<head>
    <meta charset="UTF-8" />
    <title>test</title>
	<script src="http://code.jquery.com/jquery-latest.js"></script>
	
</head>

<body>

<textarea id="mytxt" style="width:400px;height:300px;">
</textarea>

<script>

var str='ИП фывфыв В.А., Индивидуальный предприниматель фыв выфв Алексеевна, ИНН 772603327122227226, КПП 42365, адрес 117525 г.Москва ул.Петрозаводская д.16\3 кв.12. '+
'кв.65; банк ЗАО «ыыыы» г.Москвы, БИК 3333333, к/с 44444, р/с 555555555 тел +73832331444 проверка';

re = /ИНН (\d+)/i;
found = str.match(re);
console.log('ИНН '+found[1]);

re = /КПП (\d+)/i;
found = str.match(re);
console.log('КПП '+found[1]);

re = /(?:р\/с|рс) (\d+)/i;
found = str.match(re);
console.log('р/с '+found[1]);

re = /(?:к\/с|кс|корр|корр\.|кор счет|кор счёт|кор\.счет|кор\.счёт) (\d+)/i;
found = str.match(re);
console.log('к/с '+found[1]);

re = /БИК (\d+)/i;
found = str.match(re);
console.log('БИК '+found[1]);

// АДРЕС !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//re = /д.(\d+\\d+) к.(\d+)/i;
//re = /д.(\d+\\\d+)/i;
//re = /г.(\D+) ул.(\D+) д.(\d+) к.(\d+)\s/i;
re = /г.(\D+) ул.(\D+) д.([^\s]+) кв.(\d+)/i;
found = str.match(re);
var addr='';
if (found) addr=found[0];
console.log('адрес '+addr);
$("#mytxt").val($("#mytxt").val()+'адрес: '+addr+'\n');
if (found[1]) $("#mytxt").val($("#mytxt").val()+'город: '+found[1]+'\n');
if (found[2]) $("#mytxt").val($("#mytxt").val()+'улица: '+found[2]+'\n');
if (found[3]) $("#mytxt").val($("#mytxt").val()+'дом: '+found[3]+'\n');
if (found[4]) $("#mytxt").val($("#mytxt").val()+'кв: '+found[4]+'\n');

re = /\+7(\d+)/i;
found = str.match(re);
console.log('телефон: '+found[1]);

</script>

</body>
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2016, 13:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

SKLNSK,
необходимо экранировать слеши в строке

Последний раз редактировалось рони, 23.03.2016 в 13:49.
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2016, 14:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Вопрос знатокам как нормально заэкранировать слеш в строке
может есть проще способ?
found = JSON.stringify(str).replace(/\\u000/g, "\u005C").match(re);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу парсер на javascript Кирюха =) Общие вопросы Javascript 5 14.01.2013 12:06
Уничтожение E-mail адреса. Duda.Ml1986@gmail.com Оффтопик 19 07.02.2012 13:07
Изменение юрл адреса в адресной строке браузера (Sandr) Общие вопросы Javascript 12 25.08.2011 09:24
Сообщение при копировании строки адреса сайта ullltra Общие вопросы Javascript 2 19.11.2009 18:04
Сокрытие панели адреса Arkatic Элементы интерфейса 6 16.07.2009 17:38