2014-10-05 1 views
-2

У меня есть строка:Javascript Regex - Как разбить строку на массив на основе регулярных выражений

"<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$" 

Я хотел бы создать массив, который включает в себя только те слова, которые начинаются и заканчиваются в $. Для этого примера результат, что я ищу это:

["$CREATED_NEW_INCIDENT$","$BASED_ON$", "$EVENTS$"] 

Я знаю, что я могу сделать это с регулярным выражением, но я до сих пор не удалось. Кроме того, когда я нахожу правильное регулярное выражение, что мне делать? раздели это?

ответ

1

Вам не нужно разделить их. Просто матч с использованием регулярных выражений

/\$[^$]+\$/g 

Как это

var str = "<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$"; 
var arr = str.match(/\$[^$]+\$/g); 
0

Просто запустите согласование с $, пока вы не найдете $.

var regEx = /\$.*?\$/g; 
console.log(data.match(regEx)); 
# [ '$CREATED_NEW_INCIDENT$', '$BASED_ON$', '$EVENTS$' ] 

Здесь

  • . означает любой символ.

  • .* означает любой символ, ноль или более раз

  • .*? означает соответствие любой символ, ноль или более раз, но матч только как минимум, как это возможно.

Если мы не используем ? в .*?, он будет соответствовать с первого $ символа до последнего символа $.

0

Вы можете использовать:

var s = "<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$"; 
var m = s.match(/(\$[^$]*\$)/g); 
//=> ["$CREATED_NEW_INCIDENT$", "$BASED_ON$", "$EVENTS$"] 
0

Вы также можете использовать:

"<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$".match(/\$[\w]+\$/g) 
Смежные вопросы