Может кто помочь с регулярками, есть вот такая строка
ТЕРРИТОРИАЛЬНЫМ ПУНКТОМ УФМС РОССИИ ПО ПЕНЗЕНСКОЙ ОБЛ ПЕНЗЕНСКОМ РАИОНЕ 10 05 2010 560 040 ЁЭ ЛЫ 90 ЁЁ 5 ОГ 19 53 4 АГАПОВА ОАН 394 ВЕ 34
ЕКАТЕРИНА 798 МИХАИЛОВНА 398 1 ЖЕН 12 05 1996 2
ГОР ПЕНЗА ПЕНЗЕНСКОГО НА ПЕНЗЕНСКОЙ ОБЛ
Нужно вырезать с нее все цифры кроме 10 05 2010 560 040 (это первые 14 цифр) и 12 05 1996 это 8 цифр всегда идут сразу после слова ЖЕН/МУЖ Нужно получить вот такой текст
ТЕРРИТОРИАЛЬНЫМ ПУНКТОМ УФМС РОССИИ
ПО ПЕНЗЕНСКОЙ ОБЛ ПЕНЗЕНСКОМ РАИОНЕ 10 05 2010 560 040 ЁЭ ЛЫ ЁЁ
ОГ АГАПОВА ОАН ВЕ ЕКАТЕРИНА МИХАИЛОВНА ЖЕН 12 05 1996 ГОР ПЕНЗА ПЕНЗЕНСКОГО НА ПЕНЗЕНСКОЙ ОБЛ
Сейчас для таких дел нанимают один-два десятка людей на бирже (по типу "распознай капчу"), стОит копейки, а результат и скорость высокие. Кодом же можно облегчить распознавание, но полностью полагаться только на скрипты нельзя.
Для конкретного случая - только многопроходная замена (но, всё равно - нужен постоянный контроль и добавление всё новых условий - универсального ответа или алгоритма нет). Попробуйте скопировать и вставить в верхнее поле текст, который нужно почистить:
let sSTR, rEXP, sStart, sMid, sEnd;
input.addEventListener('input', function() {
sSTR = this.value;
rEXP = new RegExp('^(\\D+)([\\s\\d]+)[\\S\\s]+$', 'gim');
sStart = sSTR.replace(rEXP, '$1$2');
rEXP = new RegExp('^[\\S\\s]+((ЖЕН|МУЖ)[\\S\\s]+)$', 'gim');
sEnd = sSTR.replace(rEXP, '$1');
rEXP = new RegExp(`^${sStart}([\\S\\s]+)${sEnd}$`, 'gim');
sMid = sSTR.replace(rEXP, '$1').replace(/\d/gim, '');
output.value = `${sStart}${sMid}${sEnd.replace(/\D(\d)\D/gim, ' ')}`.replace(/\s([\D]{1,2})\s/gim, ' ').replace(/\u0020{2,}/gim, ' ');
});
body{display:flex;flex-flow:column nowrap;justify-content:space-around;align-items:center;height:100vh;margin:0}textarea{height:40%;width:90%}
<textarea id="input"></textarea><textarea id="output"></textarea>
Можно так: Считаем кол-во цифр в строке. Определяем номера цифр (по счёту), которые нам нужно удалить (т.е. больше 10 и меньше на 8, чем количество цифр). Проходимся циклом по строке и удаляем нужные цифры.
Для подсчёта количества цифр в строке можно с помощью replace
заменить цифры на ""
и сравнить длины оригинальной строки и получившейся. Узнать является ли символ цифрой можно с помощью регулярок (пост об этом должен быть на stackoverlow, вы без труда найдёте)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть необходимость в React приложение добавить чат поддержки сделанный на bitrix - это скрипт, который обычно добавляется в файл indexhtml