Это не столько о том, как добиться того, что объяснено в этом примере, но и есть множество простых способов сделать это. Вопрос в том, ПОЧЕМУ, что пример не ведет себя так, как ожидалось?Как работает группа не-захвата JS regex?
1. Если у меня есть следующая строка
"#foo#bar"
2. И я пытаюсь получить [foo, bar]
со следующим регулярным выражением в JavaScript
"#foo#bar".match(/(?:#)([a-zA-Z]*)/gi)
3. Он возвращает
Array [ "#foo", "#bar" ]
Игнорирование, не захватив группу (?:#)
Он работает, как я первый ожидаемый здесь https://regex101.com/r/zI0wH9/1
Так почему же это? Являются ли регулярные выражения JS как-то иначе?
Вам просто нужно получить доступ к 1-й группе значение –
Как если 'match' только возвращает массив? – nardeas
Используйте 'RegExp # exec' в цикле и собирайте' match [1] 'в пользовательский массив/список/независимо. В regex101 вы можете захватить JS-код со страницы * code generator * и внести поправку в соответствии с вашими потребностями (см. Комментарии там для руководства). –