Следующая example немного запутанным для меня:Eloquent Javascript Looping над RegExp Матчи
var text = "A string with 3 numbers in it ... 42 and 88.";
var number = /\b(\d+)\b/g;
var match;
while (match = number.exec(text)){
console.log("Found", match[1], "at", match.index);
}
В частности, я не понимаю, как это имеет «зацикливание» эффект. Как он проходит через все совпадения внутри одной строки, если он продолжает звонить match[1]
. Есть ли какой-то побочный эффект с exec, о котором я не знаю?
Edit: Я все еще хотел бы получить ответ на то, как match[1]
работает. Как match[1]
ответить на любой вопрос? Когда я проверить этот тип вещи сам, я получаю undefined
, посмотрите
> var y = /\d+/g.exec('5')
undefined
> y
[ '5', index: 0, input: '5' ]
> y[1]
undefined
Что здесь происходит? Разве это не будет y [0], или в приведенном выше случае, совпадение [0]? Как:
> y[0]
'5'
Добавляем к этому, когда вы добавляете это '/ g' в регулярное выражение, которое вы явно задаете для этого поведения. Если вы удалите '/ g', поведение, которое вы обнаружите, неожиданно исчезло. –
@BenjaminGruenbaum Я оставил записку об этом. Спасибо :-) – thefourtheye
@thefourtheye Хорошо, я могу это понять. Но вы действительно не ответили на мой вопрос о 'match [1]'. Почему это не 'матч [0]' .Пожалуйста, отредактируйте мой отредактированный пост. – ApathyBear