最速怪談選手権

正規表現の書き方を知りたいです。 特定の文字列以外を抽出したいです。

https://www.abc-def.jp/event/aaa/?xxx
https://www.abc-def.jp/event/111/?xxx
https://www.abc-def.jp/event/a1a/?xxx
https://www.abc-def.jp/event/1a1/?xxx

このような文字列において、
aaa
111
a1a
1a1

の部分だけを抽出するJavaScriptを知りたいです。

var str = window.location.href;
var result = str.match(xxxxxxxxxx);
result

このように書くのはわかるんですが、肝心のmatch以降でどう書けばいいのか
まだわからず・・・・

どなたか教えてください。
よろしくお願いします。

質問者からの補足コメント

  • どう思う?

    ?xxx この部分はついてるときもついてない時もあります。
    ついてない時も、同じような結果を取得できるようにしたいです。

      補足日時:2021/09/04 13:18
  • ありがとうございます!

    すいません、もう1つ質問させてください。

    1a1の部分は、実は
    AからZまでの小文字と0から9までの数字の組み合わせとなります。
    abc123もあるし、xyz987やあらゆる組み合わせが想定されます。

    その条件で教えていただけますと助かります。

    伝え方が悪くすいません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/09/04 13:33

A 回答 (3件)

https://www.abc-def.jp/event/は決まり文句で
a1の部分はbcとかxhayfaとかに変わるって事ですかね?

ならこれでいい?
const b = "https://www.abc-def.jp/event/111/";
const res = b.match(/^https:\/\/www.abc-def.jp\/event\/(.*)\/.*$/)[1];
console.log(res);
    • good
    • 0
この回答へのお礼

ありがとうございます!
完璧です! これをもとに勉強します。

お礼日時:2021/09/04 14:07

こんにちは



例示のものが似すぎているので、どのように考えるのが適切なのかわかりませんね。

例えば、
1)https://www.abc-def.jp/event/ の文字列の次に来る/までの文字列
2)全体の最後に出現する2つの/に挟まれた文字列
など、考え方で変わってきます。

ひとまず、
3)/event/ の後に続く / まで(/がなければ末尾まで)の文字列とするなら
  /(?<=\/event\/)[^/]+/
とか。

※ 1文字以上ないとヒットしません(空白文字も含める場合は + を * に)
    • good
    • 0
この回答へのお礼

ありがとうございます! 参考にさせていただきます

お礼日時:2021/09/04 14:36

const str = "

https://www.abc-def.jp/event/1a1/?xxx"
const res = str.match(/^.*\/([a1].*)\/.*$/)[1];

これでどうでしょうか?
1a1の部分だけ抽出されるはずです
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!