やりたいこと: 1233文字の長い正規表現のメンテナンス性を上げたい。
初めましての方は初めまして、お久しぶりの方はお久しぶりです。3年ぶりに帰ってきました。
現在、javascriptでスタイルシートを解析するツールを書いてます。埋め込みフォントのURLを解析する正規表現を書いたのですが…
Javascript
1/^(?:local([\t\n\f\r ]*(?:(["'])(?:(?!\1)[^\n\f\r\]|\(?:[\n\f]|\r\n?)|(?:(?:\[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?)|\[^\n\f\r\dA-F]))*\1|-?(?:[_A-Z\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF]|\(?:[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?|(?:[\x20-\x7E\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF])))(?:[-\w\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF]|\(?:[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?|(?:[\x20-\x7E\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF])))*(?:[\t\n\f\r ]+-?(?:[_A-Z\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF]|\(?:[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?|(?:[\x20-\x7E\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF])))(?:[-\w\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF]|\(?:[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?|(?:[\x20-\x7E\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF])))*)*)[\t\n\f\r ]*)[\t\n\f\r ]*,[\t\n\f\r ]*)*url([\t\n\f\r ]*((["'])(?:(?!\3)[^\n\f\r\]|\(?:[\n\f]|\r\n?)|(?:(?:\[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?)|\[^\n\f\r\dA-F]))*\3|(?:[\t!#-&\x2A-\x7E]|[\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF]|\[\dA-F]{1,6}(?:[\t\n\f ]|\r\n?)?|\(?:[\x20-\x7E\x80-\uD7FF\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF]))*)[\t\n\f\r ]*)/i 2```…(バグは除去できましたが)長くなりすぎてメンテナンスに困っています。 3知りたい内容は、 4 51. 正規表現を途中で改行できるか? 62. 同じ内容を省略して書く方法はないか? 73. ライブラリを使うなら、何を使うべきか? リテラルとの速度差は? 84. グローバルスコープを汚染せず、事前にnew RegExpで正規表現オブジェクトを生成できるか? (可能であれば外部からの干渉を不可能にしたい。) 9 10という内容です。Googleで検索したのですが、まとまった情報がなくて今後の方針に悩んでいます。1-4のどの観点からのアドバイスでも力になるので、ご意見よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。