marumaruko
@marumaruko

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

WEBサイトのソースから正規表現で値を取得する方法

解決したいこと

WEBサイトのソースから正規表現で値を取得する方法について教えてください。

調べてみたところ、指定の文字列から正規表現の値を取得する方法などは出てきたのですが、指定するのがWEBサイトのソース(スクリプトに記載のURL)の中からなので、どのように書けばいいのかわからないです。

(例)
WEBサイトのソースの中に個人IDが入っているURLがあります。そのURLから個人IDを取得したい。
※ユーザーによって個人IDが異なる為、URLの一部が変わってくる。

URL例:https://test.jp/UserID=0123456789

上記のURLから「UserID」の値を取得する方法を教えてください。

ちなみにこのURLは外部のHTMLになります。

よろしくお願いします。

0

2Answer

https://qiita.com/marumaruko/questions/9fa97bc2f6ca1896f553?UserID=0123456789のように?以降のqueryがあるんだと思っています。

const query = document.location.search;
const params = new URLSearchParams(query)
console.log(params.get("UserID"))

Screen Shot 2022-08-05 at 8.14.11.png

0Like

Comments

今このqiitaのページだと

Screen Shot 2022-08-08 at 17.23.25.png

こういうscriptタグがあるのでこれがそれと見立ててやると

const urlsWithQuery = Array.from(document.querySelectorAll("script")).filter((script) => script.src.includes("?")).map((script) => script.src);
const targetUrl = urlsWithQuery.find((url) => url.includes("id="));
const params = new URLSearchParams(targetUrl.split("?")[1]);
console.log(params.get("id"));

やってることは同じですが、単純にscriptタグを探し当てるという作業が必要なだけです。そして?が付いているということを前提にしています。

0Like

Comments

  1. @marumaruko

    Questioner

    同じように実装したのですが、以下のエラーが出てしまいました。
    Cannot read properties of undefined (reading 'split')
    at <anonymous>

Your answer might help someone💌