Регулярные выражения в 1С
Как использовать регулярные выражения (RegExp) в 1С для валидации, поиска и замены текста.
📋 Зачем нужны регулярные выражения
- Проверка формата email, телефона, ИНН
- Извлечение данных из строки
- Замена по шаблону
- Парсинг файлов и текстов
- Валидация ввода пользователя
Подключение RegExp через COM
В 1С нет встроенных регулярок, но можно использовать COM-объект VBScript.RegExp:
Функция ПроверитьРегуляркой(Строка, Шаблон) Экспорт
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина; // Игнорировать регистр
RegExp.Global = Истина; // Искать все вхождения
RegExp.MultiLine = Истина; // Многострочный режим
RegExp.Pattern = Шаблон;
Возврат RegExp.Test(Строка);
КонецФункции
⚠️ Важно: COM-объекты работают только в Windows. Для Linux используйте внешние
компоненты.
Практические примеры
Проверка email
Функция ПроверитьEmail(Email) Экспорт
Шаблон = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
Возврат ПроверитьРегуляркой(Email, Шаблон);
КонецФункции
// Использование:
// ПроверитьEmail("test@example.com") → Истина
// ПроверитьEmail("invalid-email") → Ложь
Проверка телефона
Функция ПроверитьТелефон(Телефон) Экспорт
// Формат: +7 (999) 123-45-67 или 89991234567
Шаблон = "^(\+7|8)[\s\-]?\(?\d{3}\)?[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}$";
Возврат ПроверитьРегуляркой(Телефон, Шаблон);
КонецФункции
Проверка ИНН
Функция ПроверитьИНН(ИНН) Экспорт
// 10 цифр для юрлиц, 12 для физлиц
Шаблон = "^\d{10}$|^\d{12}$";
Возврат ПроверитьРегуляркой(ИНН, Шаблон);
КонецФункции
Извлечение данных
Функция ИзвлечьПоШаблону(Строка, Шаблон) Экспорт
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.Pattern = Шаблон;
Результат = Новый Массив;
Matches = RegExp.Execute(Строка);
Для Каждого Match Из Matches Цикл
Результат.Добавить(Match.Value);
КонецЦикла;
Возврат Результат;
КонецФункции
// Пример: извлечь все числа из строки
// ИзвлечьПоШаблону("Заказ 123 на сумму 5000 руб", "\d+")
// Результат: ["123", "5000"]
Замена по шаблону
Функция ЗаменитьПоШаблону(Строка, Шаблон, Замена) Экспорт
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.Pattern = Шаблон;
Возврат RegExp.Replace(Строка, Замена);
КонецФункции
// Пример: оставить только цифры
// ЗаменитьПоШаблону("+7 (999) 123-45-67", "[^\d]", "")
// Результат: "79991234567"
🛠️ Шпаргалка по синтаксису
\d |
Цифра (0-9) |
\w |
Буква, цифра или _ |
\s |
Пробельный символ |
. |
Любой символ |
+ |
Один или более |
* |
Ноль или более |
? |
Ноль или один |
{n} |
Ровно n раз |
{n,m} |
От n до m раз |
^ |
Начало строки |
$ |
Конец строки |
[abc] |
Любой из символов |
[^abc] |
Любой кроме |
() |
Группировка |
| |
ИЛИ |
Сложная обработка текста?
Помогу с парсингом данных, валидацией и автоматизацией обработки текстов в 1С.
Написать в Telegram →