Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function describeRegex(pattern) {
- // Удаляем начальные и конечные символы ^ и $
- let desc = '';
- let cleanedPattern = pattern.replace(/^\^/, '').replace(/\$$/, '');
- // Разбиваем на части по специальным символам, сохраняя разделители
- let parts = cleanedPattern.split(/([_+*?{}[\]()])/);
- let currentDesc = [];
- for (let part of parts) {
- if (!part) continue;
- if (part === '_') {
- currentDesc.push('подчеркивание');
- } else if (part === '+') {
- currentDesc[currentDesc.length - 1] = currentDesc[currentDesc.length - 1] + ' (один или более)';
- } else if (part === '*') {
- currentDesc[currentDesc.length - 1] = currentDesc[currentDesc.length - 1] + ' (ноль или более)';
- } else if (part === '?') {
- currentDesc[currentDesc.length - 1] = currentDesc[currentDesc.length - 1] + ' (опционально)';
- } else if (part.startsWith('[') && part.endsWith(']')) {
- const range = part.slice(1, -1);
- if (range.includes('-')) {
- const [start, end] = range.split('-');
- currentDesc.push(`символы от ${start} до ${end}`);
- } else {
- currentDesc.push(`символы: ${range.split('').join(', ')}`);
- }
- } else if (part.match(/[a-zA-Z0-9]/)) {
- currentDesc.push(`фиксированный текст "${part}"`);
- } else {
- currentDesc.push('неизвестный символ');
- }
- }
- desc = 'Формат должен быть: ' + currentDesc.join(', затем ');
- return desc;
- }
- // Пример использования
- const pattern = '^[a-z]+_de_[a-z_]+$';
- console.log(describeRegex(pattern));
- // Вывод: Формат должен быть: символы от a до z (один или более), затем подчеркивание, затем фиксированный текст "de", затем подчеркивание, затем символы от a до z (один или более)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement