ChatGPTに正規表現を作ってもらうときは、「何を探すか」だけでなく、使う環境、一致させたい文字列、一致させたくない文字列を一緒に伝えます。出てきた記号をそのまま大量のデータへ適用せず、架空の例でテストしてから使いましょう。正規表現とは、一定の形をした文字列を探すための「検索ルール」です。
この記事ではJavaScriptで動作を確認できる、SF-071のような管理番号を例にします。Excel、Googleスプレッドシート、WordPress、テキストエディターなどでは正規表現の対応範囲や置換の書き方が異なります。使うアプリをChatGPTに必ず伝え、実際のアプリでも確認してください。コード全般の相談はChatGPTでプログラミングする方法で扱っています。
正規表現は何に使う?
たとえば管理番号が「SF-の後に数字3桁」という決まりなら、SF-071、SF-123を探し、SF-12やSF-ABCを除くルールを表せます。検索は該当箇所を見つける作業、抽出は見つけた部分を取り出す作業、置換は見つけた部分を書き換える作業です。置換はデータを変えるため、検索より慎重に扱います。
| 記号 | この例での意味 | 初心者の確認点 |
|---|---|---|
^ と $ |
文字列の始まりと終わり | 番号だけの行を対象にするか、文中から探すか |
[0-9] |
0から9の数字1文字 | 全角数字も対象にするか |
{3} |
直前の数字をちょうど3回 | 2桁や4桁も許すか |
\. |
ピリオドそのもの | .だけでは任意の1文字を意味する |
JavaScriptの正規表現の構文とtest()などの使い方はMDNの正規表現ガイドで確認できます。記号の意味を全部暗記するより、どんな文字列を含め、除くかを先に決める方が近道です。
ChatGPTで作る4ステップ
- 環境と用途を決める:JavaScriptで行全体を検査するのか、エディターで文中を検索するのかを書きます。
- 一致例と反例を用意する:正しい例だけでなく、似ているが誤りの例を最低3つずつ作ります。個人情報や顧客の実データを貼らず、架空の文字列にします。
- 理由とテストを依頼する:正規表現だけでなく、各記号の説明と例ごとの判定を返してもらいます。
- 自分の環境で検証する:期待結果と実際の結果を比べ、違えば条件を直して再生成します。置換ならコピーで試してから本番へ進みます。
「正規表現を作って」だけでは用途が曖昧です。OpenAIのプロンプトの基本も、具体的な指示と反復的な修正を勧めています。ここでは上記の4要素を短い指示にまとめます。

そのまま使えるプロンプト
以下をChatGPTに貼り、かっこ内を自分の条件へ置き換えてください。実際の顧客名やメールアドレスは入力しません。
JavaScriptで使う正規表現を提案してください。
用途:(例:1行全体が管理番号かどうかを判定)
一致させたい例:(例:SF-071、SF-123、SF-999)
一致させたくない例:(例:SF-12、SF-1234、X-SF-123、SF-ABC)
条件:(例:半角大文字SF、半角ハイフン、半角数字3桁だけ)
正規表現、各記号の意味、JavaScriptのtest()での確認コード、
各例の期待結果と想定結果を表にしてください。
解釈が分かれる条件は、作成前に質問してください。
この条件なら候補は/^SF-[0-9]{3}$/です。両端の^と$があるので、X-SF-123の一部分だけを誤って採用しません。/はJavaScriptの正規表現リテラルの区切りです。エディターの検索欄ではスラッシュを付けず、^SF-[0-9]{3}$と入力する場合があります。アプリの仕様を確認してください。
一致例・反例を実際にテストする
JavaScriptが使える環境では、次のコードで確認できます。表示されるtrueは一致、falseは不一致です。コピーしてもサイト上のデータを書き換えないtest()だけを使っています。
const rule = /^SF-[0-9]{3}$/;
const samples = ["SF-071", "SF-123", "SF-999", "SF-12", "SF-1234", "X-SF-123", "SF-ABC"];
for (const sample of samples) {
console.log(sample, rule.test(sample));
}
| 文字列 | 期待結果 | このパターンの結果 | 理由 |
|---|---|---|---|
SF-071 |
一致 | true |
数字が3桁 |
SF-999 |
一致 | true |
数字が3桁 |
SF-12 |
不一致 | false |
2桁しかない |
SF-1234 |
不一致 | false |
4桁ある |
X-SF-123 |
不一致 | false |
先頭に余分な文字 |
SF-ABC |
不一致 | false |
数字でない |
SF-000もこのパターンには一致します。もし000を禁止したいなら、今のルールは不足です。「000は不可」と反例を追加し、ChatGPTに作り直してもらいます。同じように、日付形式の2026-99-99は「数字の形に合う」だけでは有効な日付だと保証できません。形式確認と業務上の妥当性チェックを分けましょう。

置換に使う前の安全確認
正規表現で検索するだけなら元データは変わりませんが、置換は多数の箇所を一度に変更できます。対象のコピーまたはバックアップを作り、数件で「変更前→変更後」を見比べてください。検索した件数も見て、想定より多ければ実行を止めます。アプリごとの置換記法や改行の扱いが違うため、JavaScriptの式をそのまま他のツールへ貼らないでください。
複雑なパターンや大量データでは、想定外の一致だけでなく処理が極端に遅くなる場合もあります。まず小さな架空データで試し、本番データは権限と取り扱い規則を守ってください。生成したコード自体の確認が必要ならChatGPTでコードレビューする方法も参照できます。
うまくいかないときの直し方
- 広く一致しすぎる:行全体の検査なら
^と$を付け、許可する文字と桁数を明示します。文中検索なら逆に両端固定が不要なこともあります。 - 必要なものまで除外される:全角数字、空白、小文字、改行を許すか例で決めます。
SF-071の末尾空白を許容するかも指定します。 - ChatGPTの説明と結果が違う:説明ではなく実行結果を優先します。期待と異なる正例・反例をそのまま渡し、最小の修正を依頼します。
- 環境で動かない:JavaScript、Python、Excel、エディターでは構文やフラグ、置換の書き方が同一とは限りません。実際の環境名とエラーを伝え、そこで再検証します。
文字列の整理や集計全体を進めたい場合はChatGPTでデータ分析する方法を確認してください。正規表現は、その前処理の一部です。
よくある質問
ChatGPTが出した正規表現をそのまま使えますか?
提案はたたき台です。一致例と反例、実行環境で確認し、とくに置換はバックアップしたコピーで試してから使います。
プログラミングを知らなくても作れますか?
検索対象と除外対象を言葉で説明すれば候補は作れます。ただし、意図しない一致を見分けるために、少なくとも数件の正例・反例を自分で確かめる必要があります。
メールアドレスや日付の判定にも使えますか?
形式を調べる助けにはなりますが、実在するアドレスや有効な日付、連絡先の本人確認まで正規表現だけで保証できません。用途に応じて別の検証を行ってください。
まとめ
ChatGPTで正規表現を作るときは、環境と用途 → 一致例・反例 → 理由の説明 → 実行テストの順に進めます。SF-071の例は半角数字3桁だけを対象にする簡単なルールです。少しでも条件が違えば例を足して直し、置換はバックアップと少量テストを済ませてから実行しましょう。


コメント