ニコニコ動画のURLの構造確認&動画IDを取得する正規表現(javascript)

要約

ニコ動のURLを入力させた時に、有効なURLかを判定し、動画ID抽出、URLを綺麗に揃えるスクリプト

経緯

ニコ動にある動画のIDは多くは sm******** だと思うが、歴史的には多くの英数2字が存在するらしい。 また、数字部分の長さも色んなものがあるらしい。ちゃんと定義したい。

ユーザにニコ動のURLを入力させるときにそのURLの構造が正しいか判定したい、また、短縮URLを直したい場面にどうぞ。

コード

// 対象URL
// https://nico.ms/sm********
// https://www.nicovideo.jp/watch/sm********

url = "https://www.nicovideo.jp/watch/sm8628149";

niconicoIdReg = /(?:sm|nm|so|ca|ax|yo|nl|ig|na|cw|z[a-e]|om|sk|yk)\d{1,14}\b/;
if (/(nicovideo\.jp|nico\.ms)/.test(url) && !/live/.test(url)) {
  let videoId = url.match(niconicoIdReg);
  if (videoId !== null) {
    console.log("www.nicovideo.jp/watch/" + videoId[0]);
  }
}

参考

動画IDを抽出する正規表現をニコ動のjsから、外枠をqiitaから拝借しました

http://nicovideo.cdn.nimg.jp/web/js/mylist2.js

入力された動画のURLを元に、ページに動画を自動で埋め込む - Qiita