jsによる正規表現

jsによる正規表現

  • 主にエラーチェック
  • 文字の抽出に使われる

正規表現基本

<script>
var s = '@kosachan, @sugatech, @taketech';
var rs = s.match(/kosachan/);

if (rs) {
  console.log(rs);
}
</script>

これでconsoleを見ると 以下のように取得できていることがわかりますね

f:id:suga-tech3:20160731181152p:plain

メタ文字

  • [abc] → abcのどれかの文字
  • [a-z] → a~zまでに該当する文字
  • [^abc] → abcのどれでもない何かの文字

. 任意の一文字

  • (/kosa...n/) これで.には3文字何かしらの文字が入ります

^ 行頭

  • (/^@kosachan/) @kosachanだけ取得することができます

## $ 行末  (/@kosachan$/) 行末の@kosachanを取得することができます

{} 直前の文字の繰り返し回数

  1. 0{2} → 00の文字列
  2. 0{2,} → 00, 000, 000...の文字列を取得
  3. 0{2,4} → 00, 000, 0000の文字列取得

繰り返しの応用

  1. a-z]{5} → a-zの文字の5文字繰り返し
  2. {a-z}{3.6} → a-zの文字が3文字から6文字の繰り返し

?, *, +, |

  1. a? → 空文字, a
  2. a* → 空文字, a, aaaa, aaaa...
  3. a+ → a, aaa, aaaa...
  4. (abc|def) → abcあるいはdefの文字列

\n, \t, \d, \w, \s,

  1. \n -> 改行
  2. \t ->タブ
  3. \d -> 数字[0-9]
  4. \w -> 英数字[A-Za-z0-9_]
  5. \s ->スペース、タブ

* +のあとの?

(/+?@hogehoge.com/) 

→ これで最初のマッチする文字列だけ取得することが可能

TwitterのユーザIDを取得

/(@[A-Za-z0-9_]{1,15})/ 

→ これで@hogehogeなどのtwitterIDを取得可能「

タイトルタグ抽出

var s = '<title>こさちゃん技術アップ</title>'
var rs = s.match(/<title>([^<]+)<\/title>/);

console.log(RegExp.$1);

このように出ますね

f:id:suga-tech3:20160731181853p:plain

日付を日本語表記にする

var s = '2016-07-31';
var rs = s.match(/(\d{4})[-\/](\d{2})[-\/](\d{2})/);

console.log(RegExp.$1 + '年' +RegExp.$2+'月' + RegExp.$3+ '日');

このように出ますね f:id:suga-tech3:20160731181906p:plain


正規表現を用いて色々応用させることができそうです。