soiran
@soiran
Разработчик, Художник

Нужна регулярка для строки аргументов, как реализовать?

Привет Хабр! Есть для вас мини-таск на тему регулярок:
Есть бот, у которого есть команды, и у этих команд, помимо префикса с названием, есть строка аргументов. Нужен темплейт регулярки, который будет парсить определенное количество аргументов с определенным разделителем, при этом имея возможность добавить опциональный аргумент, который не будет ломать парсинг в случае, если его нет в строке.
Пример на псевдокоде:
/* number(\s)string */ "123 check" -> ["123", "check"] 
/* number(\s)string */ "ok check" -> null

/* string((,\s)|,)string */ "россия, москва" -> ["россия", "москва"]
/* string((,\s)|,)string */ "россия москва" -> null

/* string(\s)string((,\s)|,)(string) */ "привет хабр, вопрос" -> ["привет", "хабр", "вопрос"]
/* string(\s)string((,\s)|,)(string) */ "привет хабр" -> ["привет", "хабр"]
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Можно и без регулярок:
function test_f(){
	let s;
	s = "123 check";
	console.log(`${s} --> ${f(s," ")}`)
	s = "ok check";
	console.log(`${s} --> ${f(s)}`)
	s = "россия, москва";
	console.log(`${s} --> ${f(s)}`)
	s = "россия москва";
	console.log(`${s} --> ${f(s)}`)
	s = "привет хабр, вопрос";
	console.log(`${s} --> ${f(s)}`)
	s = "привет хабр";
};

f = function(s, delimiter){
	delimiter = delimiter || ",";
	let a = (s+"").split(delimiter).map(x=>x.trim());
	return (a.length<=1)?null:a;
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 июн. 2021, в 23:09
800 руб./в час
17 июн. 2021, в 22:01
35000 руб./за проект
17 июн. 2021, в 20:24
22000 руб./за проект