2012-09-26 3 views
6

私はDouglas Crockfordの「JavaScript:The Good Parts」を読んできました。その中で、彼は短期間で肯定的および否定的な先読みについて触れていますが、彼らが何をしているのかについての簡単な陳述だけでなく、JavaScriptの優れた部分ではないという事実もあります。Regexは正と負のLookaheadsが悪いですか(JavaScript)ですか?

私は、このマニュアル以外に、SOや正規表現ガイドサイトのいずれかでこれらを避けるべきではないと言及していません。なぜこれらがJavaScriptの悪い部分であり、より良い解決策があるかどうか、あるいはより良いアプリケーション設計になっているかどうか、どのように回避すべきかについて、さらに詳しい説明ができるかどうか疑問に思っていました。


抜粋(75ページ):?。

肯定先読み 肯定先読みグループは(=接頭辞を持っていることは、グループが一致した後に、テキストであることを除いて非キャプチャグループ のようなものですグループ が効果的に何も一致しない、始めどこまで巻き戻す。これは良い一部ではありません。

否定先読み 否定先読みグループには(?!接頭辞。一致しない場合にのみ一致する点を除いて、肯定先読みの グループのようなものです。これは良い部分ではありません。

答えて

4

ダグラス・クロフトフォードのアドバイスの多くは、コードの「可読性」と「難しさ」というだけでなく、コーダーの意図の「難しさ」についても言及しています。 Douglasが正規表現でドットを使用することをお勧めしないのと同じように、これは任意の文字にマッチするので、マッチさせたいものを説明せずに、否定的な先読みを使用することは "これ以外は許可します"と同じです。とにかく、肯定的な先読みの使用を推奨しない理由は想像できませんが、先読みの実装におけるIEのバグへの多くの言及は...

+1

On p。 76では、ネゲートされた文字クラス( '[^ ...]')の使用には異論はありません。実際、彼はそれらを「利便性」と呼んでいます。 –

+0

@ O.R.Mapper興味深い。実際、この回答には多くの情報源がありません。ある日、私はCrockfordのビデオをもう一度見て、悪い部分を説明している瞬間を参照する時間をとることを願っています。 https://plus.google.com/u/0/+DouglasCrockfordEsq/postsからこの質問に協力するように彼を呼び出すことができるのだろうかと思います –

関連する問題