「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > URL をより効果的に一致させるために正規表現を改善するにはどうすればよいですか?

URL をより効果的に一致させるために正規表現を改善するにはどうすればよいですか?

2024 年 12 月 14 日に公開
ブラウズ:878

How Can I Improve My Regular Expression to Match URLs More Effectively?

URL に一致する正規表現の改良

ユーザー入力から URL を検出して解析しようとする場合、効果的な正規表現を使用することが重要です。あなたの場合、現在の式は一部の URL 形式をキャプチャしますが、www.google.com.

改訂正規表現[ など、明示的なプロトコル スキームが欠如している URL を考慮できません。 &&&]

この問題に対処し、包括的な URL 一致を保証するには、次の改訂された通常の規則の使用を検討してください。式:

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\ .[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)
^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

正規表現の解剖学

  • アンカー: 一致が開始されることを確認し、文字列全体が終了します。
  • プロトコル (オプション): オプションの「http」または「https」プロトコル スキーム。
  • Domain: サブドメインとトップレベル ドメインを含むドメイン名と一致します。
  • Port: オプションのポートをキャプチャします。ポート番号 (例: ":8080")。
  • Path: 以降のパス情報をキャプチャします。ドメイン (例: "/index.html").
  • Query: クエリ文字列パラメータ (例: "?name=John").
  • Fragment: フラグメント識別子 (例: "#footer") をキャプチャします。
This改訂された正規表現は制限が緩和され、www.google.com のような URL だけでなく、明示的なプロトコルを使用した URL (http://www.stackoverflow.com など) とも正常に一致します。

実装例(JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA- Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)g); const url = 'www.google.com'; if (url.match(regex)) { console.log("URL が正常に一致しました。"); } それ以外 { console.log("URL が一致しませんでした。"); }
            
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3