jsによる正規表現
jsによる正規表現
- 主にエラーチェック
- 文字の抽出に使われる
正規表現基本
<script> var s = '@kosachan, @sugatech, @taketech'; var rs = s.match(/kosachan/); if (rs) { console.log(rs); } </script>
これでconsoleを見ると 以下のように取得できていることがわかりますね
メタ文字
- [abc] → abcのどれかの文字
- [a-z] → a~zまでに該当する文字
- [^abc] → abcのどれでもない何かの文字
. 任意の一文字
- (/kosa...n/) これで.には3文字何かしらの文字が入ります
^ 行頭
- (/^@kosachan/) @kosachanだけ取得することができます
## $ 行末 (/@kosachan$/) 行末の@kosachanを取得することができます
{} 直前の文字の繰り返し回数
- 0{2} → 00の文字列
- 0{2,} → 00, 000, 000...の文字列を取得
- 0{2,4} → 00, 000, 0000の文字列取得
繰り返しの応用
- a-z]{5} → a-zの文字の5文字繰り返し
- {a-z}{3.6} → a-zの文字が3文字から6文字の繰り返し
?, *, +, |
- a? → 空文字, a
- a* → 空文字, a, aaaa, aaaa...
- a+ → a, aaa, aaaa...
- (abc|def) → abcあるいはdefの文字列
\n, \t, \d, \w, \s,
- \n -> 改行
- \t ->タブ
- \d -> 数字[0-9]
- \w -> 英数字[A-Za-z0-9_]
- \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);
このように出ますね
日付を日本語表記にする
var s = '2016-07-31'; var rs = s.match(/(\d{4})[-\/](\d{2})[-\/](\d{2})/); console.log(RegExp.$1 + '年' +RegExp.$2+'月' + RegExp.$3+ '日');
このように出ますね
正規表現を用いて色々応用させることができそうです。