Advertisement
ksen145

function pattern

Jun 4th, 2025
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function describeRegex(pattern) {
  2.   // Удаляем начальные и конечные символы ^ и $
  3.   let desc = '';
  4.   let cleanedPattern = pattern.replace(/^\^/, '').replace(/\$$/, '');
  5.  
  6.   // Разбиваем на части по специальным символам, сохраняя разделители
  7.   let parts = cleanedPattern.split(/([_+*?{}[\]()])/);
  8.   let currentDesc = [];
  9.  
  10.   for (let part of parts) {
  11.     if (!part) continue;
  12.  
  13.     if (part === '_') {
  14.       currentDesc.push('подчеркивание');
  15.     } else if (part === '+') {
  16.       currentDesc[currentDesc.length - 1] = currentDesc[currentDesc.length - 1] + ' (один или более)';
  17.     } else if (part === '*') {
  18.       currentDesc[currentDesc.length - 1] = currentDesc[currentDesc.length - 1] + ' (ноль или более)';
  19.     } else if (part === '?') {
  20.       currentDesc[currentDesc.length - 1] = currentDesc[currentDesc.length - 1] + ' (опционально)';
  21.     } else if (part.startsWith('[') && part.endsWith(']')) {
  22.       const range = part.slice(1, -1);
  23.       if (range.includes('-')) {
  24.         const [start, end] = range.split('-');
  25.         currentDesc.push(`символы от ${start} до ${end}`);
  26.       } else {
  27.         currentDesc.push(`символы: ${range.split('').join(', ')}`);
  28.       }
  29.     } else if (part.match(/[a-zA-Z0-9]/)) {
  30.       currentDesc.push(`фиксированный текст "${part}"`);
  31.     } else {
  32.       currentDesc.push('неизвестный символ');
  33.     }
  34.   }
  35.  
  36.   desc = 'Формат должен быть: ' + currentDesc.join(', затем ');
  37.   return desc;
  38. }
  39.  
  40. // Пример использования
  41. const pattern = '^[a-z]+_de_[a-z_]+$';
  42. console.log(describeRegex(pattern));
  43. // Вывод: Формат должен быть: символы от a до z (один или более), затем подчеркивание, затем фиксированный текст "de", затем подчеркивание, затем символы от a до z (один или более)
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement