以前のResponsive Web PageでもWebの動的制御のためにJavaScriptを少し紹介していましたが、jQueryを使ったHTMLの制御のみでした。今回はJavaScriptをサーバでも使えるNode.jsを中心に実用性のあるサンプルコードをまとめてみたいと思います。最近AWSのLambdaでNode.jsを使ったソースを書いたこともあり、Lambda関連のサンプルコードも書く予定です。

このポストも随時更新して行く予定です。(放置中のポストが多い状態ですが…)

現在日付の取得

基本的な日付処理です。下記のサンプルではpadStart()を使って一桁の月と日の先頭に0を埋めています。但し、new Date()で取得した日付はnumber型のため、padStart()を使うにはstring型に変換する必要があります。

// 日付の取得
var now = new Date();
// JST(UTC + 9時間)に変換(必要に応じて)
now.setTime(now.getTime() + 32400000);
// 現在日付の取得
var nowTime = now.getFullYear() + "年" + 
(now.getMonth() + 1 + "").padStart(2, "0") + "月" + 
(now.getDate() + "").padStart(2, "0") + "日" + 
now.getHours() + "時" + now.getMinutes() + "分";
2019年04月30日19時53分

正規表現

正規表現とは文字の組み合わせを照会するためのパータンで、文字と記号を使って様々なパターンを表現することができます。下記は<name>タグで囲まれた文字列を取得するサンプルとなります。正規表現を扱う関数は色々ありますので、用途に応じて使うと便利です。

// 正規表現の取得
var regExp = /<name>([\s\S]*?)<\/name>/i;
// 上記と同様
var regExp = new RegExp("<name>([\s\S]*?)<\/name>", "i");
// マッチを検索
var match = regExpA.exec("<Name> Chino</Name>");
// マッチを編集
var errcd = match[0].replace(/<name>|<\/name>/gi, '').trim();
Chino

パターンに一致する文字を検索する関数はmatch()exec()があります。exec()は正規表現のオブジェクトを生成する必要がありますが、/で囲む方法とnew RegExp()を使う方法があります。上記のサンプルで使っている正規表現は以下の通りです。

  • [abc] abcのいずれか1文字に一致
  • \s 空白文字に一致
  • \S 空白文字以外に一致
  • * 直前文字の0回以上繰り返しに一致(ab*aabbなどに一致する)
  • ? 直前文字の0回か1回に一致(ab?aabに一致する)

因みに/正規表現/iinew RegExp()の第二引数はオプションフラグです。iは大文字と小文字を区別しないオプションで、gは文字列全体に対して何回もマッチングを行うオプションとなります。