2010-08-05 2 views
13

У меня есть эта строка:Сделать массив из регулярных выражений

{example1}{example2}{example3} 

Это регулярное выражение, чтобы найти эти {anything in it}:

/\{.*?\}/g 

Теперь я хочу знать, как поместить их в массив так Я могу сделать заявление for in.

Я хочу массив примерно array("{example1}","{example2}","{example3}");?

+2

Если у вас есть реальный массив, вам будет гораздо лучше использовать простой цикл 'for', а не' for ... in', который может дать вам больше, чем вы рассчитывали за: все расширения до Будет указан прототип Array', а также элементы в массиве. –

+0

Вы не должны перебирать массивы с 'for-in'. Предпочтительно использовать цикл 'for' в стиле C. – strager

ответ

12
your_array = string.match(pattern) 

http://www.w3schools.com/jsref/jsref_match.asp

+0

Будут ли такие массивы такими, как 'array (" {example1} "," {example2} "," {example3} ");'? – Adam

+2

Это javascript, просто попробуйте его в своем дружественном локальном браузере/firebug ... – Xzhsh

+0

@CIRK ya. http://jsfiddle.net/PKpyn/ (с оповещением о результатах) – hookedonwinter

10
var matches = '{example1}{example2}{example3}'.match(/\{.*?\}/g); 
// ['{example1}', '{example2}', '{example3}'] 

See it here.

Кроме того, вы должны использовать цикл for для итерации по массиву. for in может иметь побочные эффекты, такие как сбор большего количества вещей для итерации через цепочку прототипов. Вы можете использовать hasOwnProperty(), но цикл for - это намного проще.

Для обеспечения эффективности вы также можете кэшировать имущество length до включения его в состояние for.

+0

милый, это, к примеру, он может учиться у :) –

+0

hm он говорит: «Вы последний проголосовали за этот ответ 9 часов назад. Ваш голос теперь заблокирован, если этот ответ не отредактирован» –

Смежные вопросы