2012-09-26 2 views
6

저는 Douglas Crockford의 'JavaScript : The Good Parts'를 읽었습니다. 그것에서, 그는 간단하게 긍정적이고 부정적인 선견자에 대해 언급하지만, 그들이하는 일에 대한 간단한 진술과 JavaScript의 좋은 부분이 아니라는 사실에 대해서만 간략하게 설명합니다.정규식 긍정 및 부정적인 예상치 못한 오류 (JavaScript)?

이 책 외에도 SO 또는 정규식 가이드 사이트에서 이러한 것들을 피해야한다는 언급은 보지 못했습니다. JavaScript가 왜 나쁜 부분인지, 더 나은 솔루션이 있는지 또는 더 나은 응용 프로그램 설계가 될지 여부에 관계없이 어떻게 피해야하는지에 대한 자세한 설명을 얻을 수 있는지 궁금합니다.


발췌 (75 페이지) :

긍정적 예측 긍정적 예측 그룹은이 점을 제외하고 각각 캡처 그룹 그룹이 일치 한 후, 텍스트는 같은 (= 접두어있다.? 그룹 효과적으로 아무것도 일치하지 시작한 곳으로 되감기.이 좋은 일부가 아닙니다.

부정적 예측 음 내다 그룹에 (?! 접두사. 일치하지 않는 경우에만 일치하는 것을 제외하고는 긍정적 인 미리보기 그룹과 같습니다. 이것은 좋은 부분이 아닙니다.

답변

4

많은 더글러스 크록 포드 (Douglas Crockford)의 조언은 코드의 "가독성"과 "컴플 렉티 빌리티"에 관한 것이지만, 코더 의도의 "융통성"에 관한 것입니다. 더글러스가 정규 표현식에서 점을 사용하는 것을 권장하지 않는 것과 같은 방식으로, 어떤 문자와도 매칭되기를 원하는지를 설명하지 않고, 부정적인 미리보기를 사용하는 것은 "나는 이것을 제외하고 모두 허용"이라고 말하는 것과 같습니다. 어쨌든, 나는 긍정적 인 lookaheads의 사용을 권장하지 않는 이유를 상상할 수는 없지만 lookahead 구현에서 IE 버그에 대한 많은 언급은 ...

+1

On p. 76, 그는 부정 문자 클래스 ('[^ ...]') 사용에 이의가 없습니다. 실제로, 그는 그들을 "편의"라고 부릅니다. –

+0

@ O.R.Mapper interesting. 사실,이 대답은 출처가 많이 부족합니다. 나는 언젠가 Crockford 비디오를 다시 볼 시간을 보내고 나쁜 부분을 설명하는 순간에 대한 언급을 게시하기를 바랍니다. https://plus.google.com/u/0/+DouglasCrockfordEsq/posts를 통해이 질문에 대한 공동 작업을 할 수 있는지 궁금합니다. –