날짜 문자열 형식을 감지하기 위해 Javascript RegExp 테스트를 작성했습니다. 실수로 중복 된 "g"플래그를 추가하고 흥미로운 것을 발견했습니다.Javascript RegExp의 재미있는 테스트
var s = "2009/03/10";
var regex=/^\d{4}[/]\d{2}[/]\d{2}$/g;
alert(regex.test(s));
alert(regex.test(s));
alert(regex.test(s));
alert(regex.test(s));
나는 '진실'뒤에 '거짓', 다음에 '진실한', 또 다른 '거짓'이 있습니다.
루프를 사용하여 실행하면 더 흥미로운 것을 발견했으며 Internet Explorer 및 Safari에서 4 가지 "true"를 얻었고 FF, Chrome에서는 true, false, true, false를 얻었습니다.
for (var i=0; i<4; i++)
{
var s = "2009/03/10";
var regex=/^\d{4}[/]\d{2}[/]\d{2}$/g;
alert(regex.test(s));
}
아무도 자바 스크립트 정규식처럼 행동하고 어떤 원인 브라우저가 다른 결과를 반환 할 이유를 설명 할 생각을 갖고 있습니까? (변수 선언 및 수명 범위와 관련이 있습니까?)
감사를 많이 참조 MDC의 explaination은 매우 분명하다. – Darkthread
+1 각 문제가 해결되기 전에 reg.lastIndex = 0으로 설정해 주셔서 감사합니다. – bendewey
루프 내에서 문제가 발생하는 경우 각 테스트 전에 lastIndex = 0으로 설정할 수 있습니다. – k0nG