match global
Добрый день, подскажите что не так, есть такой код
var sm = ':smile: :smile1:'.match(/:([a-z0-9]+):/g); alert(sm); Я явно указываю, что требуется сохранить в качестве результата, то есть в массиве должно лежать smile,smile1, но скобки, как будто игнорируются, результат получается :smile:,:smile1: в чем мой промах? Спасибо. |
Это особенность флага g.
|
Ну хорошо, есть ведь наверняка какой-то способ добиться нужного мне результата? Пробую
var sm = /:([a-z0-9]+):/g.exec(':smile: :smile1:');
тоже беда, результат ':smile:,smile' где второй теряется неизвестно. |
Santehnick,
var sm = ':smile: :smile1:'.match(/[^:\s]+/g); alert(sm); |
Цитата:
|
Santehnick,
если двоеточие неиспользуется больше то можно так var sm = ' test :smile: :smile1: test'.match(/([^:\s]+)(?=:)/g); alert(sm); иначе так ...
var reg = /:([^:\s]+):/g;
var str = "test: :smile: :smile1: :test";
var sm = [], arr= [];
while ((arr = reg.exec(str))!=null)
{
sm.push(arr[1])
}
alert(sm);
|
| Часовой пояс GMT +3, время: 19:48. |