2012-09-26 9 views
6

Czytałem "JavaScript: dobre części" Douglasa Crockforda. W nim krótko dotyka pozytywnych i negatywnych uprzedzeń, ale nie więcej niż krótkiego stwierdzenia, co robią, i faktu, że nie są one dobrą częścią JavaScript.Czy błędy regeksów dodatnich i ujemnych są złe (JavaScript)?

Oprócz tej książki, nie widziałem żadnej wzmianki, że należy ich unikać, ani na stronach SO, ani na stronach z poradnikami regex. Zastanawiam się, czy mogę uzyskać dodatkowe wyjaśnienie, dlaczego są one złym składnikiem JavaScriptu i jak należy ich unikać - czy istnieje lepsze rozwiązanie, czy też lepsze projektowanie aplikacji.


Fragment (strona 75):

Pozytywna uprzedzona dodatnia grupa uprzedzona ma (= przedrostek Jest jak grupy nieprzechwyconej tą różnicą, że po meczach grupa, tekst jest?. przewinięta do których grupa zaczął skutecznie dopasowując nic. to nie jest dobra część.

Negative uprzedzona negatywny uprzedzona grupa ma (?! prefiks. To jest jak pozytywna grupa z wyprzedzeniem, , z tym wyjątkiem, że pasuje tylko wtedy, gdy nie pasuje. To nie jest dobra część.

Odpowiedz

4

Wiele porad Douglasa Crockforda dotyczy "czytelności" i "kompre sywności" kodu, ale także "zgodności" intencji kodera. W ten sam sposób, w jaki Douglas nie zaleca używania, na przykład, kropki w wyrażeniu regularnym, ponieważ pasuje ona do dowolnej postaci, bez wyjaśnienia, co chcesz dopasować, użycie negatywnej poprzedniej jest równoznaczne z powiedzeniem "Zezwalam na wszystko poza tym". W każdym razie, nie mogę sobie wyobrazić, dlaczego nie polecam używania pozytywnych uprzedzeń, ale wiele odniesień do błędów IE w poprzedniej wersji ...

+1

Na str. 76, nie ma on zastrzeżeń do używania zanegowanych klas znaków ('[^ ...]'). W rzeczywistości nazywa je "wygodą". –

+0

@ O.R.Mapper ciekawe. W rzeczywistości w tej odpowiedzi brakuje wielu źródeł. Mam nadzieję, że pewnego dnia będę mieć czas na obejrzenie filmów Crockford ponownie i zamieścić odniesienia do momentów, w których wyjaśniają złe części. Zastanawiam się, czy możemy go zachęcić do współpracy w tej sprawie za pośrednictwem https://plus.google.com/u/0/+DouglasCrockfordEsq/posts –

Powiązane problemy