Парсер фактического адреса
Задача - вытащить с помощью регулярного выражения из строки название города, улицы, дома, корпуса если есть, квартиры/офиса, почтового индекса.
Начал с такого кода <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> |
Хочу предусмотреть различные варианты... Например сейчас не получается вытащить номер дома если он с дробью. Например, "... д.16\2 ..."
Подскажите как надо модифицировать регулярное выражение. |
SKLNSK,
д\.([^\s]+) |
Не получилось "всё кроме пробела" (((\
Ошибку не выдает, но и дробь не берет. <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> |
SKLNSK,
необходимо экранировать слеши в строке |
Вопрос знатокам как нормально заэкранировать слеш в строке
может есть проще способ? found = JSON.stringify(str).replace(/\\u000/g, "\u005C").match(re); |
Часовой пояс GMT +3, время: 21:33. |