Передача формата данных с помощью Reg Ex

У меня есть партия строк, например

32-1233-21323300
32-dsdw-ee322300
32-ee23-cd3de300

Результат ожидания после замены

3451-1233-213.233
3451-dsdw-ee3.223
3451-ee23-cd3.de3
......

Я хочу использовать регулярное выражение в функции для передачи формата данных.

функция dataTransfer('32-xxxx-xxxxxx00', '4351-xxxx-xxx.xxx')

Мой прежний код выглядит так:

arrData(d=>{
  d = d.replace(/^[32]/,"3451").replace(/[00]$/,"");
  d = d.slice(0, 13) + '.' + d.slice(13);
})

Но я думаю, что должно быть другое хорошее решение. любое предложение?

Приложение: Спасибо за все отзывы. сдавайся, я хочу попытаться проанализировать формат типа «32-xxxx-xxxxxx00». x обозначает любой символ.

Пользователь может вводить такие параметры, как 32-xxxx-xxxxxx00 и 4351-xx0x-xxx.xx9. Я получу исходный и целевой формат. затем я пытаюсь проанализировать формат и использовать RegEx для завершения передачи данных. Но это кажется слишком сложным.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
64
5

Ответы 5

Может быть, это регулярное выражение поможет вам. Попробуйте ниже регулярное выражение

"32-1233-21323300".replace(/^(32)/,"3451").replace(/([0]+)$/,"").replace(/([0-9a-zA-Z ]{3})$/,".$1")

Выход: 3451-1233-213.233 в соответствии с вашими ожиданиями.

Я не понимаю, почему ваше решение плохое, но если вам нужно 1 регулярное выражение, вы можете использовать это:

^(?:32)(-[\da-z]{4}-[\da-z]{3})([\da-z]{3})

Он создаст 2 группы, а затем вы можете сделать "3451"+group1+"."+group2, чтобы создать окончательную строку.

Вы можете использовать /(^32)(.{9})(.{3})(00$)/, объединяя подстроки:

const a = '32-dsdw-ee322300'.replace(/(^32)(.{9})(.{3})(00$)/, `3451$2.$3`)
console.info(a)

Вам просто нужно заменить эти два. Проверьте эту демонстрацию JS.

var arr = ['32-1233-21323300','32-dsdw-ee322300','32-ee23-cd3de300']

for (s of arr) {
  console.info(s + " --> " + s.replace(/^32/,'3451').replace(/(.{3})(.{3})00$/,'$1.$2'));
}

Вы можете сделать это легко без регулярного выражения:

    var s = "32-1233-21323300";
    if (s.startsWith("32-") && s.endsWith("00")){
      // remove 32- at the beginning
      s = "3451-" + s.slice(3);
      // remove 00 at the end
      s = s.slice(0, s.length - 2);
      // insert dot
      s = s.slice(0, s.length - 3) + "." + s.slice(s.length - 3);
      console.info(s);
    }

Другие вопросы по теме