Regex.test() работает только в другое время
Regex test()
дает мне проблемы в Firefox и Chrome, но он работает безупречно в Opera и Safari.
проблемный код:
var pattern = /(\s+(?!\$\w+)|(^(?!\$\w+)))/g;
if(pattern.test(String(id).replace(/\s+OR|AND\s+/g, ''))) {
searchError("You suck.");
return 1;
}
Когда вы проходите в белом пространстве, он блокирует его каждый раз. Когда вы передаете что-то вроде '$a b'
, тогда он будет работать каждый раз в Firefox/Chrome. WEIRD.
Ответы
Ответ 1
Это ошибка в движке RegEx, здесь возник подобный вопрос с той же проблемой.
Из моего ответа на этот вопрос: это ошибка с тем, как регулярные выражения реализованы в ECMAScript 3, там отличная статья о деталях здесь.
Основы: /regex/
с модификатором g
не корректно reset, поэтому несколько вызовов .test()
чередуются между true
и false
, если каждый должен быть true
, все остальные вызовы успешно сбрасывает его.