2014-12-08 4 views
2

Я делаю базовое приложение чата с узлом js, и я пытаюсь добавить команды в чат. Пример: пользователь может добавить друга с этой командой /add nameRegex проверить предложение для слова

t = "/add Smith" 
var c = t.match(/^\s*([/](?:\S+\d+|add|send))\s+\S+/i); 
console.log(c[0]) 
// '/add Smith' 

Но я не могу получить третье слово:

t = "/send Smith 5000" 
var c = t.match(/^\s*([/](?:\S+\d+|add|send))\s+\S+/i); 
console.log(c) 
// '/send Smith' 
//third variable is missing 

Это все еще дает первые два слова в c[0], но мне тоже нужно третий , Как я могу решить эту проблему?

+1

Лично я, как правило, делать такие вещи, как это вручную путем разделения и изучения первого слова, а затем ответвляюсь изучить следующую команду конкретных вариантов –

+0

На самом деле я делал так, но я хотел бы попробовать регулярное выражение. – Lazy

ответ

3

\S+ будет соответствовать 1 или нескольким пробелам, поэтому он останавливается, как только он найдет место после Smith. Используйте .+, чтобы соответствовать всем после "send ".

var c = t.match(/^\s*([/](?:\S+\d+|add|send))\s+.+/i); 
//=> ["/send Smith 5000", "/send"] 
Смежные вопросы