|
Как регулярным выражением привести серию паспорта РФ к одному виду? |
☑ |
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
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший