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, время: 23:04. |