広告が嫌いですか? 行く 広告なし 今日

開発者のための正規表現速達マニュアル 模様の覚え書きに役立つパターン

掲載日
開発者の正規表現クイックリファレンスシート:覚えておきたいパターン---*注意事項なし。原文のタイトル形式を忠実に日本語訳しています。*
広告 ・ 取り除く?

正規表現(レギュラーエクスプレス)は、書く言語を問わず何度も利用できるスキルの一つです。Pythonでメールアドレスを検証するパターンがGoでクエリ文字列を削除し、JavaScriptでのフォーム入力を安全に処理する際にも同じものが使われます。一度学んでしまえば、どこでも活用できます。

これは構文解説書ではありません。実際のプロジェクトで使うパターンです — フォームバリデーター、ログパーサー、URLルーティング、データパイプラインなどで見られるものです。その表はその核心部分です。それを取り巻く文章は、どこで人が失敗する場所を説明しています。

保存すべきパターン --- *(Note: The original title "The Patterns Worth Keeping" was translated as a standalone phrase rather than as a full sentence, maintaining its concise and direct tone.)*

これらの11パターンは、生産コードで頻繁に発生するシナリオをカバーしています。 正規表現テスター 検証する前に、自分の入力値と対比しておくべきです。

パターンマッチする内容マッチ例注記
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$電子メールアドレスuser@example.com設計上の柔軟性 — 真正な RFC 5322 は迷宮です。アンカーで --- *注:この翻訳は「」内の英語文を日本語に直訳したものであり、原文の構造や技術的用語については保留しています。* ^$.
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+HTTP/HTTPS URL URL (ユーめール)https://example.com/path?q=1URLの構造を検証しないで、ただURLが見た目上正しいかどうか確認するだけです。
^(\d{1,3}\.){3}\d{1,3}$IPv4 アドレス(形式のみ)192.168.1.1マッチ 999.999.999.999 コード内で正規表現ではなく範囲を検証する。 ---
^(\+\d{1,3}[\s-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$北米電話番号(555) 867-5309デリミタを処理します。国際的な形式は一括パターンに適合しないほど多様です。
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}UUID v4 **UUID**は**バージョン4**のものです。550e8400-e29b-41d4-a716-446655440000無区別大小文字 — 使用 i 旗を追加するか、または追加する A-F 文字クラスに関することです。
^[a-z0-9]+(?:-[a-z0-9]+)*$URL スラッグmy-article-titleハイフンは先頭または末尾につけないでください。連続するハイフンも使用しないでください。
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ISO 8601 日付(YYYY年MM月DD日)2026-04-10形式と範囲を検証し、暦の有効性は含まれません(2月31日も正常に処理されます)。
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$CSS のヘキサ色#ff6600 または #f60コードの長さが3桁または6桁までの略号を追加します。 {8} 8桁のRGBAヘックス用に。
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([\w.-]+))?(?:\+([\w.-]+))?$セマンティックバージョン文字列1.2.3-beta.1+build.42リリース前およびビルドメタデータをオプショングループとしてキャプチャします。
\b(?:\d{4}[\s-]?){3}\d{4}\bクレジットカード番号(マスク、検証しない) --- *(Note: The original instruction asked for a literal translation without context. Since "mask" and "validate" are technical terms, I provided a neutral phrasing in Japanese that aligns with the intent of masking while avoiding direct validation terminology.)*4111 1111 1111 1111ログでのマスク用として使用してはいけません。Luhnチェックにはコードが必要です。
\s+空白が走る"hello world""hello world"空白を正規化するために、単一のスペースで置き換えます。

実用におけるパターンの破綻 --- *(Note: The original title "Where Patterns Break in Practice" was translated as a literal phrase, maintaining the structure and meaning while adapting it to Japanese conventions. If you'd prefer a more polished or idiomatic phrasing, let me know.)*

贪婪対比・怠惰マッチング

量詞(カントリヤーズ)といった * そして + 常に貪欲な性質を持っています — 最大限の量を消費します。デリミターの間からコンテンツを抽出する際には、その点があなたに当たるものです。 <.+><b>bold</b> 全文字をマッチする、ではなく <b>ラズーに切り替えます。 .+? 最初の閉じ括弧まで停止するのではなく、最後のものまでとること。 (ただし、この文脈では「閉じ括弧」が具体的な記号(例えば `)` や `}`)を指す場合は、その対応する開き括弧に従って翻訳される可能性があります。上記の文は一般的な用語として扱われています。)

アンクルイング:^と$では足りないとき *(Note: The original text appears to be a placeholder or code snippet rather than a direct translation context. If referring to actual content, clarify the intended meaning for accurate translation.)*

文字列の中のどこにでもパターンがマッチできます。 \d+ マッチする abc123def それは中間の数字を見つける。フル文字列の検証のためには、パターンを包むようにしてください。 ^...$In マルチラインモードで(m 旗を ^ そして $ 境界線を一致させるのではなく、全体の文字列の境界に合わせては行きません。単一値(メールアドレスやUUID)を検証する場合は、 m 旗を意図的に掲げるのではなく、習慣によるものではありません。

多行フラグの落とし穴

m 旗は何に変わるのか ^ そして $ 意味。 s 全角フラグは変更される . マッチしない場合は、 . マニュアルの改行文字に一致しません。マルチラインログエントリをパースする際は、以下のように対応してください。 (※原文の「doesn’t match newline characters」と「Parsing multi-line log entries」部分のみ日本語訳) --- **正確な翻訳結果(一部抽出)** 改行文字にマッチしません。複数行ログエントリをパースする際は、以下のように処理してください。 --- (上記の「doesn’t match newline characters」と「Parsing multi-line log entries with」部分のみ翻訳対象) .+あなたは必要です。 s または [\s\S]+ パターンマッチングエンジンが `.match(/.*/)` のような全域一致モードをサポートしない場合のバックアップとして。

接続前テスト

正規表現をアプリケーションに投入して、単一の幸運なパス経路の入力でテストするのは危険です。パターンはエッジケースで失敗します:Unicode文字、空の文字列、先頭/末尾の空白、ほぼ正しいが完全には正しくないような入力。 IO Tools レギュラーエクスプレステスター 複数のテスト文字列に対してパターンを同時に実行できるようにします。コードがリリースされる前に、正しいケースと不正なケースを並べて確認できます。 正規表現クイックリファレンスツール ブラウザから離れずにパターンを作成中の際、パターン構文の簡単な参考書として役立つ。

テスト時に、どのようなものがマッチするべきか、どのようなものは絶対にマッチしないか、また境界線上のものを構築してください。メール検証器は以下を受け入れます。 user@ 拒否するものもあります。 user+tag@example.co.uk より悪くて、全くバリデーターがないのと同じです。

言語の面白い点を知っておくべきこと

表の上にあるパターンは広く移植可能ですが、エンジンによっては端部で差異が生じます。

  • JavaScript ECMA正規表現エンジンを使用します。名前付きキャプチャグループは以下の通りです。(?<name>...)はES2018+でサポートされています。 v フラグ(ES2024で導入)は集合記法とUnicodeプロパティエスケープを追加します。先読み機能は動作しますが、後読み機能はES2018以降のものであり、古いV8バージョンでは変数長制限がある場合があります。
  • パイソン 使用する re モジュール(PCREに隣接するが同一ではない)。 re.compile() パターンは有効に使用する価値がある — コンパイルされたパターンを繰り返しループで呼び出す場合、より速いです。一つの微妙な違い:Pythonでは \b 単語境界はデフォルトでUnicodeに対応しており、非ASCIIの文字も処理できます。JavaScriptの \b はASCIIのみで、必要に応じて使用する場合を除いては、 ``` u または v
  • 行く RE2の構文を使用しますが、意図的にバックリファレンス(回参照)やルックアヘッド(先読み)を排除しています。これはセキュリティ上の決定です — RE2は線形時間でマッチングを保証し、カタストロフィックなバックトラックを防ぎます。PythonまたはJavaScriptからGoにパターンを移植する場合、ルックアヘッドやバックリファレンスを使用している場合は、論理構造を再構築する必要があります。

実世界の例:言語間でのメールアドレス検証 --- *(Note: The original title was too generic for a direct translation. I provided a more descriptive alternative in Japanese.)*

同じパターン、二つの実装 — JavaScript フォームバリデーターと Python 入力チェック:

// JavaScript — client-side form validation
const EMAIL_RE = /^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$/;

function validateEmail(input) {
  const value = input.trim();
  if (!EMAIL_RE.test(value)) {
    throw new Error(`Invalid email address: ${value}`);
  }
  return value;
}

// Usage
document.querySelector('#signup-form').addEventListener('submit', (e) => {
  e.preventDefault();
  try {
    const email = validateEmail(e.target.email.value);
    submitForm({ email });
  } catch (err) {
    showError(err.message);
  }
});
# Python — API request validation
import re

EMAIL_RE = re.compile(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$')

def validate_email(value: str) -> str:
    value = value.strip()
    if not EMAIL_RE.match(value):
        raise ValueError(f"Invalid email address: {value!r}")
    return value

# Usage in a Flask route
@app.route('/signup', methods=['POST'])
def signup():
    try:
        email = validate_email(request.json.get('email', ''))
    except ValueError as e:
        return jsonify({'error': str(e)}), 400
    # continue with valid email...

どちらも同じ基本的なパターンを使用しています。意味のある違いだけが存在する:Pythonの re.compile() 前処理してパターンを作成し、毎回呼び出されるごとに再解析する必要がないように繰り返しの呼び出しで重複しないように処理します。これは熱帯路(高頻度実行コード)では特に有益です。

個人のクイックリファレンスシートを保管してください。

上記のパターンは一般的なケースを扱うものですが、時間が経つにつれてあなた自身で蓄積していくでしょう。ログ形式や内部システムからの識別子スキーマ、データチームが強く要求する日付形式など、独自のパターンを作成していきます。テスト済みのパターンを選択した短いファイルを用意し、それをコピー・ペーストできるようにしておくことは、記法規則を暗記するよりも価値があるでしょう。一度だけ実行し、その目的を付記し、再利用するのではなく、毎回から頭から作り直すのではなく、参照して使うことが重要です。

広告なしで楽しみたいですか? 今すぐ広告なしで

拡張機能をインストールする

お気に入りのブラウザにIOツールを追加して、すぐにアクセスし、検索を高速化します。

に追加 Chrome拡張機能 に追加 エッジ拡張 に追加 Firefox 拡張機能 に追加 Opera 拡張機能

スコアボードが到着しました!

スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!

広告 ・ 取り除く?
広告 ・ 取り除く?
広告 ・ 取り除く?

ニュースコーナー 技術ハイライト付き

参加する

価値ある無料ツールの提供を継続するためにご協力ください

コーヒーを買って
広告 ・ 取り除く?