Skip to content

無料の Regex テスター — パターンをオンラインでデバッグ & マッチ

任意のテキストに対して regex パターンを即座にテストできます。リアルタイムのマッチハイライト、キャプチャグループ、置換プレビュー、分割、パターン解説に対応。JavaScript 系の正規表現を 100% プライベートに、登録不要で利用できます。

トラッキングなし ブラウザで動作 無料
すべてのテストはブラウザ内でローカルに実行されます。あなたのパターンとテキストはこのデバイスから出ません。
フラグ
ハイライト表示されたマッチ
マッチ & キャプチャグループ
ECMA-262 への忠実性、(/d フラグ有無双方での) キャプチャグループの正確性、String.prototype.replace との置換テンプレートの同等性、ウォールクロック予算による ReDoS 耐性、アクセシビリティ(ARIA ロール、スクリーンリーダーによるマッチアナウンス、RTL/LTR 処理)についてレビュー済みです。 — Go Tools テキストツーリングチーム · May 21, 2026

正規表現テスターとは?

正規表現テスター(regex テスター)は、regex パターンを書き、テストテキストを貼り付け、パターンが何にマッチするかを正確に確認できるツールです — キャプチャグループ、置換プレビュー、フラグの解説まで揃い、コードを再コンパイルしたりスクリプトを走らせたりする必要がありません。開発者にとっては、ループを分単位からミリ秒単位に縮めます: パターンを微調整し、ハイライトの動きを観察し、自信を持って regex をデプロイできます。

正規表現はテキストパターンを記述するためのコンパクトな言語です。`\d+` は 1 桁以上の数字にマッチします。`[A-Za-z_]\w*` は典型的な識別子にマッチします。`(?\d{4})-(?\d{2})-(?\d{2})` は ISO 日付にマッチし、各部分に名前を付けます。正規表現はあらゆるコードエディタの検索置換、あらゆるフォームのバリデーション、あらゆるオブザーバビリティスタックのログ解析、そしてインターネットの半分を動かしている Unix ツール `grep`、`sed`、`awk` の根幹です。同時に、正しく書くのが難しいことで有名でもあります: 量指定子の 1 文字ずれや、エスケープし損ねた 1 文字で、誤った部分文字列にマッチしたり、マッチを取りこぼしたり、最悪の場合は破滅的バックトラックで CPU コアを人質にされたりします。優れた regex テスターは、それらの失敗モードを本番に届く前に捕捉します。

本テスターは、最新ブラウザに搭載されているネイティブの ECMA-262 RegExp エンジン上で動作します — JavaScript、TypeScript、Node.js、Deno、Bun から呼び出すのと同じエンジンです。つまり: キャプチャグループ(番号付きと `(?...)` による名前付き)、先読みと後読みのアサーション(`(?=...)`、`(?!...)`、`(?<=...)`、`(?

テスターが生のマッチを超えて表示するもの: 「マッチ & キャプチャグループ」パネルは、各マッチを [start, end) オフセットと各キャプチャグループの値とともに一覧表示します — `String.prototype.matchAll` を /d フラグ付きで呼び出したときと同じ情報を、視覚的に読みやすく並べたものです。Replace タブは $1 / $& / $` / $' / $$ / $ の置換アルファベットをフルサポートしたライブプレビューを示します — JavaScript の String.replace が受け付けるとおりです。Split タブは regex で String.split を呼び、各部分を表示します。Explain タブはパターンをトークン化し、それぞれにプレーンな説明を付けます — コードレビュー、教育、方言間の移植に便利です。

プライバシーについて: すべての操作はローカルです。あなたのパターンとテストテキストはページを離れません — ログにも残らず、分析サービスにも送られず、ディスクにも保存されません。localStorage に残るのは UI 設定(アクティブタブと普段使っているフラグ)だけです。これにより、編集済みのログサンプル、社外秘のパターン、内部設定、データスキーマのヒントを含むパターンも安全に扱えます。サーバー連動型のテスター(regex101 など)と比べると、プライバシーとレイテンシーは厳密に上です;トレードオフは単一方言サポート(JavaScript のみ)です。

regex 初心者の方には、「Common patterns」ドロップダウンから実戦投入済みのスターターをどうぞ: メールアドレス、URL、IPv4、UUID、hex color、ISO 日付、米国電話番号、末尾の空白を取り除くパターン。1 つを読み込み、用意されたサンプルテキストに対するマッチを観察し、パターンを 1 文字ずつ変更してエンジンの反応を体感してください。regex 駆動のクリーンアップの前後を比較したいときは Text Diff ツールと、入力や期待出力が JSON のときは JSON Formatter と、マッチ対象が URL エンコードされた文字列のときは URL エンコーダー と組み合わせて使ってください。

// The pattern you build in this tester drops straight into JavaScript.
// Example: extract every ISO date from a string with named groups.

const pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = 'shipped 2026-05-21, scheduled 2026-06-30';

for (const m of text.matchAll(pattern)) {
  console.log(m.groups.year, m.groups.month, m.groups.day);
  // → 2026 05 21
  // → 2026 06 30
}

// Same regex, used in a replace with $<name> templates:
text.replace(pattern, '$<day>/$<month>/$<year>');
// → 'shipped 21/05/2026, scheduled 30/06/2026'

// With the /d flag, every match carries [start, end] indices
// per capture group — the Matches panel uses this to paint offsets.
const p2 = /(?<year>\d{4})-(?<month>\d{2})/gd;
const m = [...text.matchAll(p2)][0];
m.indices.groups.year; // [8, 12]

主な機能

ライブマッチハイライト

パターンがパースされた瞬間、テストテキスト内のすべてのマッチが点灯します。隣接するマッチが視覚的に数えやすいよう交互の色を使い、結果上のカウントバッジが正確な総数を示します — Run ボタンも、200ms を超えるデバウンスもありません。

キャプチャグループのサイドパネル

右側の「マッチ & キャプチャグループ」パネルは、各マッチをカードとして表示します — [start, end) オフセット、フルマッチのテキスト、内部の番号付き + 名前付きキャプチャグループすべてが揃います。名前付きグループは $ としてラベル付けされ、コードで消費するときと同じ読み方ができます。

$1 / $& / $ によるライブ置換プレビュー

Replace タブに切り替えると、置換がリアルタイムで適用されます。ECMAScript の置換アルファベットがフルサポート: 位置参照の $1..$N、名前付きの $、マッチ全体の $&、前後の $` と $'、リテラルドルの $$。入力と出力のパネルが並び、ワンクリックでコピーできます。

Regex 境界での分割

Split タブは、あなたの regex で String.prototype.split を呼び、各部分を番号付きリストで表示します。空の部分は ⏎ の記号で描画され、隣接する区切り文字をエンジンがどう扱ったかが確認できます — CSV 風の入力クリーンアップのデバッグに便利です。

パターンエクスプレイナー(トークン単位)

Explain タブはパターンをチップ単位にトークン化し、クラス(escape / quantifier / character class / group / anchor / alternation)で色分けし、各チップに 1 行の説明を添えます。出荷前に自分の regex を自分に読み聞かせるのに使えるほか、コードレビューや教育の場でも有用です。

ReDoS セーフ(ウォールクロックタイムアウト)

すべてのマッチ呼び出しは 250 ミリ秒の予算でラップされます。`(a+)+`、`(a|aa)+b`、深く入れ子になった量指定子のような古典的な破滅的バックトラック形状は、「Pattern timed out」警告で安全に中断します — タブがフリーズせずページは応答性を保ちます。サーバー側サンドボックスなしでの検出です。

Common Patterns ライブラリ

開発者がもっとも頻繁に手を伸ばす 8 つの実戦投入済みスターター: メール、URL、IPv4、UUID v4、hex color、ISO date、米国電話番号、末尾の空白を取り除くパターン。それぞれにサンプルが付属するので、応用前に regex の動きを確認できます。

パーマリンク共有(アップロードなし)

「Copy link」はパターン + フラグ + サンプルテキストを URL ハッシュにエンコードします(#p=…&f=gim&t=…)。ブラウザは URL フラグメントをリクエストで送信しないので、共有リンクは go-tools.org のサーバーに触れずに受信者のマシンで状態を再現します。自己完結型で監査もしやすい仕組みです。

100% プライベート、ブラウザのみ

あなたの regex とテストテキストはデバイスから離れません。ネットワークリクエストなし、ログなし、入力した内容に対する分析もなし。DevTools → Network で確認できます: 入力してもリクエストはゼロです。社外秘のパターン、編集済みのログ、regex101 に貼り付けたくないテキストでも安全に使えます。

実践例

段落からすべてのメールアドレスを抽出する

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g

/g フラグを有効にしたパターンを貼り付け、テストテキストに段落を投入すると、ハイライト表示ですべてのメールアドレスが浮かび上がります。右側の「マッチ & キャプチャグループ」パネルには、各アドレスが [start, end) のオフセットとともに一覧表示されます — 同じ regex を grep、sed、コードエディタにそのまま流し込むときに役立ちます。

名前付きグループで日付の各部分をキャプチャする

(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g

ECMA-262 の名前付きグループは右パネルに $、$、$ として表示されます。Replace タブに切り替えて $/$/$ を試すと、ISO 日付を DMY 形式に 1 回で変換できます — まったく同じ手法が最新の JS の replace 呼び出しで使えます。

$1 後方参照による検索と置換

(\w+) (\w+)
Replacement: $2, $1   →   Jack Doe → Doe, Jack

番号付きキャプチャグループ 2 つに置換テンプレート $2, $1 を組み合わせると、Replace タブにライブプレビューが表示されます。$&、$`、$'、$$、$ もすべてサポートしています — ECMAScript 仕様の置換アルファベットそのものなので、コピーしたものはあらゆる JS エンジンでそのまま動作します。

行ごとに末尾の空白を取り除く

[ \t]+$
/[ \t]+$/gm

/g(global)と /m(multiline)を組み合わせると、$ は入力末尾だけでなく各行末でアンカーします。空の置換文字列で Replace タブを開けばクリーンな差分が確認できます: 行末のタブやスペースが消え、本文はそのままです。/s(dotAll)を切ったままなら、. が改行を越えることもありません。

破滅的バックトラックを検出して生き残る

(a+)+b
Test text: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac

入れ子の + 量指定子は古典的な ReDoS パターンです。素朴なテスターではタブがフリーズしますが、本ツールでは 250ms のウォールクロックガードが発火し、「Pattern timed out」バナーが表示され、ページは応答性を保ちます。パターンをアンカーするか、重複しない交替に切り替えるか、原子グループ風のイディオムに書き換えて再テストしましょう。

複数の区切り文字で CSV 風の行を分割する

[,;|]\s*
alpha, beta; gamma | delta → ["alpha", "beta", "gamma", "delta"]

Split タブに切り替えます。カンマ、セミコロン、パイプ(任意の空白付き)が分割の境界になります。コピペしたタグリストの整形、ユーザー入力の正規化、本格的な CSV パーサーに渡す前のログフィールドの前処理に便利です — 本物の RFC 4180 データなら CSV to JSON を使ってください。

Regex テスターの使い方

  1. 1

    スラッシュの間にパターンを入力する

    ECMA-262 の任意の正規表現を /…/ 欄に投入してください。不正なパターンはパーサーメッセージとともに赤くハイライトされ、有効なパターンはそのままライブマッチに進みます。

  2. 2

    必要なフラグを切り替える

    g(global)、i(case-insensitive)、m(multiline)、s(dotAll)、u(unicode)、y(sticky)、d(indices)。各チップは有効時に点灯し、パターン右の読み出し欄に正規のリテラルが表示されます。

  3. 3

    テストテキストを貼り付ける

    入力すると、マッチが交互の色でハイライトされます。右側の「マッチ & キャプチャグループ」パネルには、各マッチが [start, end) オフセットとともに表示され、各キャプチャグループの値(名前付きグループは $ でラベル付け)も並びます。

  4. 4

    タブを切り替えて Replace、Split、Explain を使う

    Replace は置換テンプレートを入力と並べてプレビューします。Split はマッチの境界ごとに分割します。Explain は各要素にプレーンな説明を添えてパターンをトークン単位で解説します。

  5. 5

    リテラルをコピーするかパーマリンクを共有する

    「Copy /pattern/flags」は、JavaScript / TypeScript / Node にそのまま使える正規の regex リテラルをクリップボードに置きます。「Copy link」は全状態を URL ハッシュにエンコード(アップロードなし)するので、同僚はそれをローカルに再現できます。

よくある regex の間違い

/g フラグを忘れて 1 件しかマッチしなかった

/g(または /y)なしでは、エンジンは最初のマッチで停止します。match、matchAll、replace、split のすべてのメソッドが、グローバルフラグの有無で挙動が変わります。/g を有効にして再実行すれば、結果上のカウントが 1 から N に跳ね上がります。

✗ 誤り
Pattern: /\d+/  →  '1 22 333' は ['1'] のみ
✓ 正しい
Pattern: /\d+/g  →  '1 22 333' は ['1', '22', '333']

誰がこのツールを使うか

リリース前にフォーム入力を検証する
メール / 電話 / 郵便番号 / ユーザー名の regex が、想定どおりにマッチし、想定どおりに弾くことを — Unicode の名前、プラスエイリアス、国際フォーマットなどのエッジケースを含めて — 確認しましょう。バリデーションが本番に届いて実ユーザーを跳ね返す前にできる対策です。
ログや設定からデータを抽出する
任意のログスライスからリクエスト ID、ステータスコード、レイテンシ、スタックトレース行を引き抜くパターンを構築します。名前付きグループでデータが自己記述になり、Matches パネルにはオフセットが表示されるので、同じ regex を後で `rg --replace` や `grep -oE` に渡せます。
コードベース全体で検索置換する
リファクタリング用パターン(例: `(\w+)\.apply\(null,\s*\[(.*?)\]\)` → `$1($2)`)をここで下書きし、代表的なスニペットに対して置換結果をプレビューしてから、検証済みの regex をエディタのプロジェクト全体検索置換に自信を持って貼り付けられます。
ネットで見つけたパターンを健全性チェックする
StackOverflow やブログから regex をコピーしてきましたか? Explain タブに投入してみてください — 各トークンにプレーンな説明が付きます。微妙な問題(`.+?` のつもりが `.+` になっている、`^`/`$` アンカーが抜けている、意図せず貪欲な量指定子)をコードに着地する前に見つけられます。
チームメイトに regex を教える
動いているパターンで Explain タブを開き、トークン単位で歩いて見せましょう。色分け(escape / quantifier / character class / group / anchor / alternation)により、学習者は文字そのものだけでなく、regex の構造的な形を見られます。
言語間でパターンを移植する
JavaScript で使う必要のある Python や PCRE の regex がありますか? ここに貼り付けてください。パースが通れば Explain が JS 等価のセマンティクスを示し、通らなければパーサーエラーが該当する構文(原子グループ、占有量指定子、インライン `(?i)`)を名指しするので、書き換えるべき場所が即座に分かります。
本番の遅い regex をデバッグする
本番の regex が破滅的バックトラックを起こしている疑いがあるなら、入力のサンプルとともに本テスターに貼り付けてください。病的なケースでは 250ms のウォールクロックガードが発火し、プロファイラに手を伸ばす前に即座に診断できます — Explain は入れ子量指定子の根本原因も指し示します。

エンジンとアルゴリズムのメモ

ECMA-262 RegExp エンジン(ネイティブブラウザ)
`new RegExp(pattern, flags)` と、V8 / JavaScriptCore / SpiderMonkey に搭載されているエンジンを使用します — JavaScript ならどこでも得られる同じ regex セマンティクスです。ここで検証したパターンは Node.js、Deno、Bun、最新ブラウザでそのまま動作します。
String.matchAll によるマッチ反復
グローバル反復には手動の lastIndex ループではなく `text.matchAll(regex)` を使います。これによりすべてのマッチがキャプチャグループ、名前付きグループ、(/d 付きで) [start, end] インデックスを保持します。ゼロ幅マッチは標準的な lastIndex の +1 アドバンスで処理し、無限ループを避けます。
ReDoS 保護のためのウォールクロックタイムアウト
250 ミリ秒の予算がすべての match、replace、split 呼び出しをラップします。エンジンは単一のマッチ試行内で内部的にバックトラックできますが、外側の反復は予算と協調動作します — 病的なパターンは `timedOut: true` で中断し、UI はタブをフリーズさせずに警告を出します。
置換テンプレートの再実装
Replace タブは `String.replace` に委譲せず、$1..$N、$&、$`、$'、$$、$ を独自パースします。これにより、名前付きグループテンプレートにエッジケースのある古い Safari や古い Node を含めて、プレビューが全エンジンで同じ挙動になります。出力は最新の JavaScript エンジンが生成するものと完全に一致します。
Explainer のためのパターントークナイザ
Explain タブは手書きのトークナイザを実行し、パターンの各フラグメントを分類します(escape / metachar / quantifier / character class / group-open / group-close / anchor / alternation)。なじみのない構造は汎用注記付きの `literal` にフォールバックするので、エクスプレイナーがコンテンツを黙って落とすことはありません。
URL ハッシュによるパーマリンク(送信されません)
共有状態は location.hash フラグメント(`#p=…&f=…&t=…&tab=…`)にエンコードされます。ブラウザは HTTP リクエストでフラグメントを送信しないため、パーマリンクを開いても go-tools.org のサーバーは何も受け取りません。ハイドレーションは受信者のデバイス上で完結します。

Regex のベストプラクティス

意図したときにパターンをアンカーする
`^pattern$` は完全一致;`pattern` はどこでもマッチします。フォーム検証で最も多いバグは、この選択を誤ることです: `^` が欠ければ先頭の `attacker.com/` がドメインチェックをすり抜け、`$` が欠ければ末尾のゴミが通り抜けます。意図的に壊したサンプルを Match タブで試し、何が弾かれるかを確認しましょう。
純粋な構造には非キャプチャグループを使う
`(?:foo|bar)+` と `(foo|bar)+` は機能的に同一ですが、前者はキャプチャグループを確保しません。量指定子や交替のためだけのグループには `(?:…)` を使いましょう — 番号付き $1..$N が安定し、エンジンのわずかな仕事も節約できます。
ASCII を超えるものには /u フラグを使う
/u なしだと、ドットや `\w` はサロゲートペア文字(絵文字、BMP 外のコードポイント)を 2 つの UTF-16 ユニットとして扱います。/u 付きなら 1 コードポイントずつ — ユーザーが認識するとおりです。/u は `\p{Letter}` などのプロパティエスケープも有効にします。特別な理由がないかぎり、新しいパターンは /u を既定にしましょう。
キャプチャグループに名前を付ける
`(?\d{4})-(?\d{2})` は自己記述的です。半年後に regex を読み返したとき、`m.groups.year` は明らかに年ですが、`m[1]` はそうではありません。$ を使った置換テンプレートはグループの並べ替えにも耐えます: 位置テンプレートは、誰かがグループを 1 つ追加した瞬間に壊れます。
成功ケースだけでなく失敗ケースもテストする
regex テスターは失敗ケースのためにあります。パターンが何にマッチするかを確認したら、テストテキストを意図的に変更して、何がマッチしないかを見ましょう — 先頭の空白、末尾の空白、欠けた部分、余計な部分、間違った大文字小文字、混在スクリプト。正しい入力は通すがゴミも受け入れるパターンは、本番が最初にあぶり出すバグです。

よくある質問

regex やテストテキストはサーバーに送信されますか?
いいえ。マッチ、置換、分割、解説のすべての操作は、ネイティブの RegExp エンジンを使ってブラウザ内の JavaScript で実行されます。あなたのパターンやテキストはアップロードされず、ログにも記録されず、ディスクにも保存されず、サードパーティにも送信されません。localStorage に保存されるのは UI 設定(アクティブなタブと普段使っているフラグ)だけで、次回訪問時にページが状態を覚えるためのものです — パターンやテストテキストは保存しません。DevTools → Network を開いて確認できます: どちらの入力欄に文字を打ってもリクエストはゼロです。社外秘のパターン、編集済みのログサンプル、内部設定など regex101 に貼り付けたくないものでも安全に扱えます。
この regex テスターはどの方言を使いますか — PCRE、Python、Java、JavaScript?
ECMA-262(JavaScript)です — V8、JavaScriptCore、SpiderMonkey で実装されている方言、つまりブラウザ、Node.js、Deno、Bun で `new RegExp(pattern, flags)` を使ったときに得られるのと同じエンジンです。サポートされる機能は: キャプチャグループ(番号付きと `(?...)` による名前付き)、先読み `(?=...)` / `(?!...)`、後読み `(?<=...)` / `(?...)`、占有量指定子 `a++`、条件分岐 `(?(1)yes|no)`、インラインモディファイア `(?i)`)はシンタックスエラーになります。Python の `re.VERBOSE` もここではサポートされません。Python / Java / Go の regex を扱うなら、パターンをそれぞれのエンジンに移植してください — 単純なパターンの多くはそのまま通り、解説機能は方言中立です。
g、i、m、s、u、y、d の各フラグは何をしますか?
g(global)— 最初の 1 件ではなくすべてのマッチを取得;.matchAll での反復やグローバル置換に必須。i(case-insensitive)— A と a を同じ文字として扱う。m(multiline)— ^ と $ が各改行でアンカーされ、入力全体の先頭・末尾だけにはならない。s(dotAll)— . が改行にもマッチ;/s なしだとドットは \n で止まる。u(unicode)— \u{HHHH} エスケープと Unicode プロパティエスケープ(\p{Letter})を有効化し、パターンを UTF-16 コードユニットではなく Unicode コードポイントの列として扱う。y(sticky)— 各マッチを lastIndex でアンカーし、トークナイザーで重宝。d(hasIndices、ES2022)— `.indices` と `.indices.groups` を [start, end] のペアで埋める;このテスターは内部で /d を使ってグループの境界を描画しています。テストテキストの上のチップで切り替えられ、正規の /pattern/flags リテラルが読み出し欄に表示されます。
キャプチャグループはどう書き、どう参照するのですか?
サブパターンを括弧でくくります: `(\d{4})-(\d{2})-(\d{2})` で 3 つの位置グループが得られ、置換時は $1、$2、$3、Matches パネルでは m.groups[0..2] でアクセスできます。名前付きグループは `(?...)` を使います: `(?\d{4})-(?\d{2})` なら置換テンプレートで $/$ と書けます。量指定子だけのためにグループ化したい場合は `(?:...)` の非キャプチャグループを使います(`(?:foo|bar)+`)— 後方参照を作らないので、番号付きの $1..$N が安定します。同じパターン内では `\1`、`\2` などで以前のキャプチャを参照できます — `\b(\w+)\s+\1\b` で重複した単語を見つけるのに便利です。
先読みと後読みはどう動作し、何に便利ですか?
ルックアラウンドはゼロ幅アサーションで、文字を消費せずに何かがマッチする(しない)ことを確認します。`(?=foo)`(肯定先読み)は現在位置の後ろに `foo` があれば成功;`(?!foo)`(否定先読み)は `foo` が続かないときに成功します。`(?<=foo)` と `(?
なぜ私の regex はブラウザをフリーズさせるのですか、破滅的バックトラックとは何ですか?
破滅的バックトラックは、重複する選択肢の上に量指定子が入れ子になったときに発生します — 古典的な形は `(a+)+`、`(a|aa)+`、`(\w*)*`、`(?:a|a?)+`。最後の文字でマッチが失敗するような入力では、エンジンが諦めるまでに指数的な数のグループ分割を試行します。`aaaaaaaaaaaaaaaaaaaaab` に対するパターン `(a+)+b` で言えば、答えを出すまでに 2^21 ≈ 200 万回のバックトラックが発生します。本テスターはすべてのマッチ呼び出しを 250ms のウォールクロック予算でラップしており、予算を超えると反復は停止し「Pattern timed out」警告が表示されます。修正策: パターンを境界にアンカーする(`^...$`)、重複しない選択肢を選ぶ(`(a|aa)` ではなく `(a|b)`)、入れ子の量指定子を展開する(`(a+)+` ではなく `a+`)、占有量指定子風のイディオムに書き換える(`(?=(a+))\1` で JS 上 `a++` を擬似的に再現)。
この regex テスターは regex101.com と何が違いますか?
違いは 3 点。(1) プライバシー: regex101 はキー入力ごとにバックエンド評価のためサーバーにデータを送り、共有コミュニティリンクにパターンを保存します。本ツールはブラウザ内で完結し、ネットワーク通信はゼロです。(2) スピード: 変更ごとのサーバーラウンドトリップで 80〜300ms 上乗せされますが、ここでは長文でもマッチが 10ms 未満で更新されます。(3) 方言フォーカス: regex101 は機能フラグ UI で PCRE、Python、Java、.NET、JavaScript、Rust、Go をサポート;本ツールは ECMA-262(JavaScript)— ブラウザ、Node、Deno、Bun に搭載される方言 — に絞り、解説とパーマリンクをその単一方言向けに最適化しています。PCRE 限定機能が必要なら regex101 が正解;JavaScript / TypeScript 作業にはこちらが速くプライベートです。ここでのパーマリンクは URL ハッシュ(アップロードなし)なので、共有リンクは受信者のマシンでローカルにパターンを再現します。
. | ( ) [ ] { } * + ? ^ $ \ などの特殊文字はどうエスケープしますか?
前にバックスラッシュを付けます: `\.`、`\|`、`\(`、`\)`、`\[`、`\]`、`\{`、`\}`、`\*`、`\+`、`\?`、`\^`、`\$`、`\\`。スラッシュ `/` は文字列として渡すパターンではエスケープ不要です(JS の regex リテラルでスラッシュに挟む場合のみ必要)。文字クラス `[...]` の中ではほとんどのメタ文字が特別な意味を失うため、`[.]`、`[*]`、`[+]` はすべてリテラルにマッチします — 文字クラス内で特殊なまま残るのは `]`、`\`、`^`(先頭で否定するときのみ)、`-`(2 文字の間にあるとき範囲を示す)だけです。迷ったら、リテラル文字列をそのままパターンに貼り付けて Explain を動かしてみてください: ブレイクダウンパネルにすべてのエスケープシーケンスの説明が 1 行ずつ表示されます。
リンクで同僚に regex を共有できますか?
はい — しかもリンクにはサーバーラウンドトリップがありません。アクションバーの「リンクをコピー」をクリックすると、テスターはパターン、フラグ、テストテキスト、アクティブなタブを URL ハッシュにエンコードします(`#p=...&f=gim&t=...&tab=match`)。リンクを開いた人は同じ状態でページがハイドレートされます — 受信者のマシン上でローカルに復元されます。データはハッシュフラグメントに置かれるため、go-tools.org のサーバーには送信されず(ブラウザはフラグメントをリクエストで送信しません)、アクセスログにも記録されません。リンクはテキストのサイズに応じて長くなるので、2KB を超えるサンプルは「Copy /pattern/flags」で regex だけコピーし、テキストは別途貼り付けてください。実テキストを共有せずに regex レビューしたいなら、パターンとフラグだけ共有し、受信者は自分のコーパスを貼り付ければ同じマッチが得られます。
Unicode、絵文字、非ラテン文字はサポートされていますか?
はい。/u フラグを有効にすると完全な Unicode 処理に切り替わります: \w は既定ではラテンの単語文字にマッチしますが(既定のセマンティクス)、/u を併用すれば Unicode プロパティエスケープで広いカテゴリにマッチできます — `\p{Letter}` ですべての文字、`\p{Script=Han}` で漢字、`\p{Emoji}` で絵文字、`\p{Number}` ですべての数字 / 数値にマッチします。/u なしでは、👨‍💻 のようなサロゲートペアの絵文字は 2 つの UTF-16 コードユニットとして扱われ、`^.$` のようなパターンはマッチしません;/u を付ければドットは各書記素コードポイントを 1 文字として扱います。RTL スクリプト(アラビア語、ヘブライ語)では特別な対応なしにパターンが動作します — 方向はレンダリング時の関心事であり、regex エンジンの関心事ではありません。CJK のコンテンツもラテンと同じ要領でマッチします。
.match、.matchAll、.replace、regex を使った .split の違いは?
String.prototype.match は最初のマッチを返します(/g 設定時は全マッチの配列)が、/g を付けるとキャプチャグループが失われます。String.prototype.matchAll は /g が必須で、マッチ配列のイテレータを返し、キャプチャグループとインデックスも含みます — 本テスターが内部で使っているのはこれです。String.prototype.replace は文字列テンプレート($1、$& など)か、(match, ...groups, offset, string, namedGroups) で呼ばれるコールバックを受け取ります。String.prototype.split はマッチごとに分割します — /g と組み合わせても便利ですが、split のセマンティクスではグローバルフラグは無視されます。本ツールでは Match タブで match、Replace で replace、Split で split を露出させており、ページを離れずにすべての挙動をプレビューできます;コードに貼り付ける準備ができたら、リテラル /pattern/flags は 1 クリックで取得できます。
Python や Java の regex がここで動かないのはなぜですか?
本テスターは ECMA-262(JavaScript)を動かしているからです — 多くのパターンはきれいに移植できますが、一部は移植できません。よくある落とし穴: (1) Python のインラインフラグ `(?i)` や `(?x)` は JS では無効です — 代わりに上のフラグチップを使ってください。(2) Python の `\A` と `\Z` は JS では `^` と `$` です(行アンカーには /m)。(3) Java / Python の条件分岐 `(?(name)yes|no)` は JS ではサポートされません — 交替で書き直してください。(4) 占有量指定子 `a++` と原子グループ `(?>...)` は JS では使えません — `(?=(a+))\1` で擬似的に再現します。(5) Python の `(?P...)` は JS では `(?...)` です。(6) 水平空白の `\h` と垂直空白の `\v` は JS にはありません — `[ \t]` と `[\n\r]` で代用してください。移植性のあるポートには Explain がトークンごとに何をしているか分解してくれるので、サポート外の構文を等価な書き方に置き換えやすくなります。
テキストサイズやマッチ数に上限はありますか?
実用上の上限: テストテキスト約 200,000 文字、同時にハイライト表示されるマッチ 500 件。500 件を超えると Matches パネルに「Showing first 500」のバナーが表示されますが、カウントバッジは引き続き正確な総数を示します。250ms のウォールクロック予算は、サイズに関係なく暴走パターンを抑え込みます。マルチメガバイトのログファイルには、コマンドラインの `grep -oE` や `rg`(ripgrep)で regex を実行してください — ストリーミング処理で UI の描画上限にも当たりません。巨大なテキストの単発スキャンには、代表的なスライスを本テスターに貼ってパターンを検証し、検証済みのパターンをシェルでファイル全体に適用するワークフローが向いています。

テキスト比較と差分検出

テキスト処理

2 つのテキストをブラウザ内で即座に比較。並列ビュー、行内の単語レベルハイライト、統一 diff のエクスポート、大文字小文字・空白・空行の無視に対応。完全ブラウザ内処理でアップロード不要、テキストは端末から出ません。

無料の文字数カウンター & 単語カウントツール

テキスト処理

単語数、文字数、文の数、段落数、読了時間をリアルタイムで計測できます。Twitter、メタディスクリプション、Instagram の文字数制限チェックにも対応。無料・プライベート・登録不要。

進数変換ツール — 2進数・16進数・10進数・8進数

単位変換

無料オンライン進数変換ツール。2進数、8進数、10進数、16進数および任意の基数(2-36)間で数値を瞬時に変換。BigInt対応で桁数制限なし。登録不要・サーバー送信なし、すべての処理がブラウザ内で完結。コピーボタンやコードリテラル出力で開発作業を効率化。

Base64エンコーダー&デコーダー

エンコーディングとフォーマット

Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。

Crontab ジェネレーター & cron 式ビルダー

日付/時刻ツール

ブラウザ上で cron 式を生成・検証・デコードできます。ローカルタイムまたは UTC での次回実行プレビュー、POSIX 5 フィールド構文、プリセット、自然言語による説明に対応。無料・プライベート・登録不要。

CSV to JSON 変換ツール

エンコーディングとフォーマット

CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。