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