Имя: Пароль:
1C
1С v8
Как регулярным выражением привести серию паспорта РФ к одному виду?
0 RomaH
 
naïve
31.07.13
11:49
Использую ВК v8: Регулярные выражения в v82
от orefkov
есть возможность с помощью только рег выражений привести строку серии к единообразному виду
т.е. преобразовать строку

например:
78/02
78-02
78 02
7802
7898902
надо привести к 7802
1 Помогите
 
31.07.13
11:51
Можно. Только что за 7898902?
2 RomaH
 
naïve
31.07.13
11:56
(1) это 78любыесимволы02
3 RomaH
 
naïve
31.07.13
11:56
(1) как?
4 orefkov
 
31.07.13
11:57
Может так?
^(\d\d).*(\d\d)$
5 RomaH
 
naïve
31.07.13
11:57
сейчас пока в таком виде:
        ШаблонСерии = "\d{2}[^0-9]*\d{2}";
        
        СтрокаНомера = СтроковыеФункцииКлиентСервер.СтрокаСоотвествуетШаблонуРегЕксп(Номер,ШаблонНомера);
        СтрокаСерии = СтроковыеФункцииКлиентСервер.СтрокаСоотвествуетШаблонуРегЕксп(Серия,ШаблонСерии);
        
        Если СтрокаНомера = Неопределено Или СтрокаСерии = Неопределено Тогда //Серия или номер не вменяемы - удалим эту запись вообще
            НаборЗаписей = РегистрыСведений.ДокументыФизическихЛиц.СоздатьНаборЗаписей();    
            НаборЗаписей.Отбор.Период.Установить(ВыборкаПоПаспортам.Период);
            НаборЗаписей.Отбор.Физлицо.Установить(ВыборкаПоПаспортам.Физлицо);
            НаборЗаписей.Отбор.ВидДокумента.Установить(ВыборкаПоПаспортам.ВидДокумента);
            НаборЗаписей.Записать();
        КонецЕсли;
        
        СтрокаСерии = Лев(СтрокаСерии,2) + Прав(СтрокаСерии,2);

а вот как без последней строки?
6 RomaH
 
naïve
31.07.13
11:59
(4) оно возвращает строку удовлетворяющую шаблону
а надо приведенную к определленной маске
7 y88
 
31.07.13
12:03
первые два и последние два + проверка на цифры
8 dmpl
 
31.07.13
12:05
(0) Лев(стр, 2) + Прав(стр, 2)
9 RomaH
 
naïve
31.07.13
12:07
(8) чукча не читатель?
как это сделать с помощью ТОЛЬКО рег выражения
т.е. из одной строки получить совсем другую
10 dmpl
 
31.07.13
12:08
(9) Нафига использовать нештатные средства? Проще вообще поле ввода сделать жестко 4 символа.
11 RomaH
 
naïve
31.07.13
12:10
(10) не учите меня жить
12 orefkov
 
31.07.13
12:14
Используй шаблон из (4) и метод replace.
Строка замены - "\1\2".
13 Широкий
 
31.07.13
12:14
(9) ЗАМЕНА
14 dmpl
 
31.07.13
12:16
(11) Ну как хотите. Но вообще, не надо ничего сложного придумывать, как показывает практика - сам же потом виноват и окажешься. Например, когда вместо 7898902 введут 78989022.
15 Помогите
 
31.07.13
12:35
(14) или когда введут 1117802111
Программист всегда исправляет последнюю ошибку.