Показать сообщение отдельно
  #1 (permalink)  
Старый 28.02.2021, 18:31
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Как преобразовать строку в массив?
Есть входящая строка, представляет собой маску номера телефона:
+1({/[1-9]/}00) 000 000{/[1-9]/}


Нужно перебрать строку таким образом, чтобы получился массив:
['+', '1', '(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /[1-9]/]

0 преобразует в регулярку /\d/
Всё что между символами "{}" сохранял "как есть", но группировал как 1 элемент массива (при этом фигурные скобки не сохраняются).
Всё остальное тоже сохранял как есть.

Вот что пока есть:
mask = '+1({/[1-9]/}00) 000 000{/[1-9]/}';
var oldMask = mask.split('');
	newMask = [];

oldMask.forEach(function(char) {
	switch( char ) {
		case '0':
			newMask.push( /\d/ );
			break;
		default:
			newMask.push( char );
	}
});


Проблема именно с парсингом того, что между фигурными скобками. Важно. Маска может быть и совершенно иной, не только номер телефона.

Последний раз редактировалось Янковиц, 28.02.2021 в 18:40.
Ответить с цитированием