Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
As with exec (or in combination with it), test called multiple times on the same global regular expression instance will advance past the previous match.
/([0-9])+/gможно записать сперва/([0-9])+/а затем/([0-9])/и наконец/[0-9]/function has_digit(s) { return /\d/.test(s); }
javascript: function test(d){return /([0-9])+/g.test(d)}; alert( [test('5'), test('5')] )с неба свалилось./([0-9])+/g.test("abc")
Этот код не вызывает проблем.
javascript: function test(d){return test.regexp.test(d)}; test.regexp = /([0-9])+/g; alert( [test('5'), test('5')] )
То есть, простыми словами, литеральный регэксп не создается каждый раз при вызове var r = /regexp/.Это баг спецификации ES3, и в ES5 он уже исправлен (соответственно, и некоторые браузеры подтянулись).
Вместо этого браузер возвращает уже существующий объект, со всеми свойствами, оставшимися от предыдущего запуска.
… мы хотим проверить регулярным выражением, что в строке есть хотя бы одна цифра ...
Регулярная ловушка