Я не уверен, что это ошибка или просто я, которая не понимает поведение методов регулярного выражения javascript (последнее, вероятно, более вероятно).javascript regex match/exec issue
Проблема в том, что я не могу получить regexp's типа/(что-то | что-то)/для работы с методами match или exec без глобального идентификатора, например./(somereg1 | somereg2)/g
Когда существует глобальный идентификатор, методы корректно возвращают каждый найденный экземпляр. Но когда его нет, оба метода правильно возвращают только первое совпадение, которое они находят. Проблема в том, что они возвращают его дважды !? например, в предложении:
var str = "Here is somereg1 and somereg2" //I would expect
str.match(/(somereg1|somereg2)/)
вернуть "somereg1" Вместо этого он возвращает "somereg1, somereg1"
Установите этот флажок jsfiddle: http://jsfiddle.net/myf43ay1/
Код должен быть достаточно понятны. Первый пример сделан для W3schools.
Если у вас есть вопросы, пожалуйста, дайте мне знать.
\ Peter
Первый элемент в массиве матч полный матч по регулярному выражению. Второй элемент вперед вы получаете все захваченные группы. – anubhava