私は、ユーザーから正規表現を取得し、それを数千の入力文字列に対して実行したいという状況があります。マニュアルでは、RegExp
オブジェクトには.compile()
メソッドがあり、このような場合にスピードアップする方法が見つかりました。しかし、なぜ私はコンストラクタでそれらを渡した場合、regexp文字列をもう一度渡す必要がありますか?おそらくコンストラクタはcompile()
自身ですか?Javascript:RegExp.compile()のポイントは何ですか?
答えて
RegExp().compile()
method is deprecated。これは基本的にコンストラクタと同じですが、私はそれが非難された理由を仮定しています。あなたは今日コンストラクタを使用する必要があります。言い換えれば
は、あなたがこれを行うことができるように使用:
var regexp = new RegExp("pattern");
regexp.compile("new pattern");
をしかし、今日、それは単に呼び出すと何が違うのではありません。私の知る限り、すべての正規表現を伝えることができるよう
var regexp = new RegExp("pattern");
regexp = new RegExp("new pattern");
を.compileは、RegExpオブジェクトの基本となる正規表現を置き換えます。私は過去にコンパイルに価値があったかもしれないと思っていますが、現代のJSエンジンはすべて最初の呼び出しで正規表現をコンパイルし、コンパイルしたバージョンをキャッシュします。
Opera 11では、RegExp.compile()
を実行すると実際にエラーが発生します。
Operaが正規表現をコンパイルすると、re.source
文字列がスラッシュ(たとえば、re.source == "^(.)"
は"/^(.)/"
)にラップされます。正規表現を手動でコンパイルすると、Operaはこの事実を認識せずに先に進んでコンパイルし直します(re.source
は"//^(.)//"
になります)。コンパイルするたびにスラッシュが追加され、正規表現の意味が変わり、エラーが発生します。
/
を使用している場合は、それを使用する必要が
、これを試してみる:
var regex=new RegExp('/[a-zA-Z]/')
console.log("not compiled with escape /", regex.test("ciao"))
regex.compile()
console.log("compiled", regex.test("ciao"))
var regex=new RegExp('[a-zA-Z]')
console.log("not compiled, but no escape /", regex.test("ciao"))
うわー、それは面白いです。私はちょうどそれをチェックし、あなたは正しい! MDNには言及されていません。 –
この説明を参照してください:http://stackoverflow.com/a/7964948/651789 – ken
- 1. Pythonで@staticmethodのポイントは何ですか?
- 2. OpenCLカーネルの__のポイントは何ですか?
- 3. このコードのポイントは何ですか?
- 4. getlineのバッファのポイントは何ですか?
- 5. Luaのネストブラケットのポイントは何ですか?
- 6. カミソリビューエンジンのMasterLocationFormatsのポイントは何ですか?
- 7. バザールのタグのポイントは何ですか?
- 8. iOSのナビゲーションツールバーのポイントは何ですか?
- 9. D3D12のSetGraphicsRootSignatureのポイントは何ですか?
- 10. Rubyの@@ double_at_variableのポイントは何ですか?
- 11. EC2のインスタンスストレージのポイントは何ですか?
- 12. SDLのwindow_magicのポイントは何ですか?
- 13. first2 ++のポイントは何ですか?
- 14. RxJS - オペレータのポイントは何ですか?
- 15. ASP.NET AJAXのポイントは何ですか?
- 16. MethodImplOptions.InternalCallのポイントは何ですか?
- 17. _MERGE_PROXYSTUBのポイントは何ですか?
- 18. browserstack.com APIのポイントは何ですか?
- 19. iter_swapのポイントは何ですか?
- 20. 大入力のポイントは何ですか?
- 21. Guzzle async promiseのポイントは何ですか?
- 22. SplittableRandomのポイントは何ですか?
- 23. インターフェイスのポイントは何ですか?
- 24. DICOM:SOPInstanceUIDタグのポイントは何ですか?
- 25. Vaadin:H2データベースのポイントは何ですか?
- 26. iPhone 8シミュレータのポイントは何ですか?
- 27. uWSGIのポイントは何ですか?
- 28. ビルダーパターン:ディレクターのポイントは何ですか?
- 29. ストアドプロシージャのポイントは何ですか?
- 30. UrbanAirshipのポイントは何ですか?
エンジンは正確に行うキャッシュ正規表現を?そして、彼らはいつもそれをしますか?式はどれくらいキャッシュに保持されますか?私は特にV8に興味があります。 – CoDEmanX