Вырезать цифры после текста JS

85
16 апреля 2022, 22:20

Может кто помочь с регулярками, есть вот такая строка

ТЕРРИТОРИАЛЬНЫМ ПУНКТОМ УФМС РОССИИ ПО ПЕНЗЕНСКОЙ ОБЛ ПЕНЗЕНСКОМ РАИОНЕ  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 ГОР ПЕНЗА  ПЕНЗЕНСКОГО  НА  ПЕНЗЕНСКОЙ ОБЛ
Answer 1

Сейчас для таких дел нанимают один-два десятка людей на бирже (по типу "распознай капчу"), стОит копейки, а результат и скорость высокие. Кодом же можно облегчить распознавание, но полностью полагаться только на скрипты нельзя.

Для конкретного случая - только многопроходная замена (но, всё равно - нужен постоянный контроль и добавление всё новых условий - универсального ответа или алгоритма нет). Попробуйте скопировать и вставить в верхнее поле текст, который нужно почистить:

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>

Answer 2

Можно так: Считаем кол-во цифр в строке. Определяем номера цифр (по счёту), которые нам нужно удалить (т.е. больше 10 и меньше на 8, чем количество цифр). Проходимся циклом по строке и удаляем нужные цифры.

Для подсчёта количества цифр в строке можно с помощью replace заменить цифры на "" и сравнить длины оригинальной строки и получившейся. Узнать является ли символ цифрой можно с помощью регулярок (пост об этом должен быть на stackoverlow, вы без труда найдёте)

READ ALSO
Как правильно в react запустить стороний script?

Как правильно в react запустить стороний script?

У меня есть необходимость в React приложение добавить чат поддержки сделанный на bitrix - это скрипт, который обычно добавляется в файл indexhtml

104
валидация js колесо

валидация js колесо

есть такая форма, и само колесо

220
Как проверить fetch на успех?

Как проверить fetch на успех?

Подскажите в чем может быть проблема

96
В javascript е функция не меняет переменную

В javascript е функция не меняет переменную

Здравствуйте есть две функции

121