正規表現を使用してアンカー リンクの href 属性値を抽出します
HTML アンカー リンクから href 属性値を抽出するには、カスタム正規表現を使用できます。ここでは、お客様の特定のニーズに対する包括的な回答を示します:
指定した正規表現パターン「@(<a.>?>.?)」はアンカー リンクを識別しますが、href 値はキャプチャされません。これを実現するには、より具体的なパターンが必要です:
<code><a\s+(?:[^>]*?\s+)?href=(["'])(.*?)</code>
このモードは次のように分類されます:
<a
は開始アンカー タグと一致します。 s (?:[^>]*?s )?
は、アンカー タグ内の任意の空白およびオプションの属性 (非キャプチャ グループ) と一致します。 href=
は href 属性と一致します。 (["'])(.*?)1
は、二重引用符または一重引用符の間にある href 値をキャプチャします (グループをキャプチャ)。 有効な URL をフィルタリング
無効な URL (「?」や「=」文字を含まない URL) を除外するには、次の正規表現を使用できます:
<code>page\.php\?id\=.*</code>
このパターンは、指定した基準に一致する文字列と一致します。
リンクされたリストから href 値を抽出します
アンカー タグを解析する必要がなくなったと述べました。これで、「href="abcdef"」形式のリンクのリストが作成されました。このリストから href 値を抽出するには、次を使用できます:
<code>"href=(['"])(.*?)</code>
このモードは、二重引用符または一重引用符で囲まれている場合でも、href 値をキャプチャします。
JavaScript コード スニペット
JavaScript でこれらの正規表現パターンを使用する方法を示すために、コード スニペットを次に示します。
<code class="language-javascript">const pattern = /<a\s+(?:[^>]*?\s+)?href=(["'])(.*?)/; const linkText = '<a href="www.example.com/page.php?id=xxxx&name=yyyy"></a>'; const match = pattern.exec(linkText); if (match) { console.log(match[2]); // 输出:www.example.com/page.php?id=xxxx&name=yyyy }</code>
以上が正規表現を使用してアンカー リンクから href 属性値を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。