タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

正規表現に関するhbKOTのブックマーク (4)

  • 正規表現のパフォーマンスの話をされても全くピンと来なかった僕は、backtrackに出会いました。 - Qiita

    /^.*-.*$/ #悪い(表現方法として"短い"けど) /^\d{3}-\d{4}$/ #良い(表現方法として"長い") となります。 (もちろん、上のパタンは、デタラメなものも引っかかるので、正しくないけど、そういうのはいったん無視。 感覚的には下の方がよさそうだけど。どういうことですか? ステップ数を見てみる! https://regex101.com/#pcre この素晴らしいサイトを利用します。 123-4567とのマッチングを考えます。 まず、/^\d{3}-\d{4}$/ はこんな感じで、7ステップ 一方、/^.*-.*$/ は..12ステップ ということで、.* の方がステップ数が増えてパフォーマンスが悪くなっていそうです。 (実際パフォーマンスはこのステップ数に依存しそうなので、悪くなっていると思います。後で時間測ります。 バックトラック(BACKTRACK)と出会いまし

    正規表現のパフォーマンスの話をされても全くピンと来なかった僕は、backtrackに出会いました。 - Qiita
  • アプリからファイアウォールにまで使われる正規表現を標的にした「ReDoS攻撃」とは?

    サーバーやネットワークに意図的に負荷をかけ、サービス障害を引き起こすDoS攻撃の中でも、正規表現のパターン処理の脆弱性を利用した攻撃をReDoS攻撃と呼び、StackOverflowCloudflareもその標的となったことがあります。パデュー大学の電気・コンピューター工学の教授であるジェームズ・デイビス氏が、ReDoS攻撃の原因となる典型的な正規表現とその対策について語っています。 The Regular Expression Denial of Service (ReDoS) cheat-sheet https://levelup.gitconnected.com/the-regular-expression-denial-of-service-redos-cheat-sheet-a78d0ed7d865 正規表現とは、いくつかの文字列をひとつの文字列でパターンとして表現する方法のこ

    アプリからファイアウォールにまで使われる正規表現を標的にした「ReDoS攻撃」とは?
  • JavaScriptで文字列が小文字・大文字・数字を全て含むかどうか判定する方法について - Qiita

    タイトルにあるように、文字列が半角英小文字・大文字と半角数字を全て含むかどうかを判定するという機会は少なくありません。特に、文字種の多さがパスワードの強さであるという教義の持ち主である場合に顕著です。もちろん長さは16文字以内です。 さて、この判定は一見単純に見えて一筋縄ではいきません。文字列の条件判定といえば正規表現ですが、「全て含む」という条件をきれいに書くのは少し難しいでしょう。そこで、この記事ではこの条件を判定する諸方法について雑に考察します。 愚直に正規表現を使う方法 正規表現では、「ある文字種をひとつ含む」という条件を書くのは簡単です。例えば半角小文字を含むという文字列は/[a-z]/という正規表現で判定可能です。これを用いれば、正規表現を3回使うことで上述の条件を判定できます。 const ratz = /[a-z]/, rAtZ = /[A-Z]/, r0t9 = /[0-

    JavaScriptで文字列が小文字・大文字・数字を全て含むかどうか判定する方法について - Qiita
  • 正規表現の基本 - Qiita

    まぁ、基的な正規表現でみんなが利用するのはこの辺かな。 2. Javaで正規表現について javaで、正規表現をプログラミングに取り入れる場合はjava.util.regexを利用する事になる。JavaDocのURLはこれ。javadoc SE6 java.util.regex.Patternクラスには、正規表現についての詳細の説明が記述されている。Javaを利用して正規表現を極めたいと思ったら一度は読むべき。 ちなみに、java.util.regex.Pattenクラスの概要はこんな記述がされている。 つまり、Javadocをしっかり読めば正規表現を理解する近道になる。 コンパイル済みの正規表現です。 正規表現は、文字列として指定し、このクラスのインスタンスにコンパイルする必要があります。結果として得られるパターンは、Matcher オブジェクトを作成するために使用されます。 このオブ

    正規表現の基本 - Qiita
  • 1