特定文字列範囲内の文字を取得する正規表現

  • このエントリーをはてなブックマークに追加

正規表現っていつも覚えられなくてその都度検索していたりしていたので記事にしましたっ。


例えば・・。
下記のような感じのhtmlがあったとします。

<p class="btn btn_submit on">Post</p>

そのクラス名のsubmitという部分だけを取ってきたいとします。
Javascriptのreplaceとかsplitとかを駆使すればなんとかsubmit部分だけを取ってくることができるのですが こういうときは正規表現を使うと、シンプルに書くことができます。

ただどうやって書くのがいいんだろう・・っていつも悩んでいたので
自分用のためにもメモしたいと思います!

//タグのクラス名を取ってくる
var str = $(p)[0].className;

//範囲btn_という文字列から空白(\s)の範囲内にある文字列を取ってくる
console.log(str.match(/btn_([^\s]+)/)[1]);

もしくは終わりの文字列が決まっていないような下記のような場合・・。

<p class="btn btn_submit on">Post</p>
<p class="btn btn_submit">Post</p> <!-- onがついてなかった場合 -->
//範囲btn_という文字列から空白(\s)もしくは"の範囲内にある文字列を取ってくる
console.log(str.match(/btn_([^(\s||")]+)/)[1]);

こんな感じで終わり部分の文字列を || で複数指定することで複数のパターンに対応することができます。

例 : 特定の文字列から文字列までの範囲内の文字を取得する正規表現

  • 「str.match(/btn_([^\s]+)/)」で「btn_submit」この文字列をとってくることができます。
  • 配列の1番目には()で指定された最初の文字列がはいっているので配列の1番目[1]を指定することで範囲内の文字を取得することができます。

使えるように関数化してみました。

var regExp = function(str) {
    return {
        rangeMatch: function(fromStr,toStr) {
            var toStr = toStr ? toStr : '\\s',
                reg = new RegExp(fromStr + '([^' + toStr + ']+)');

            return str.match(reg) !==null ? str.match(reg)[1] : '';
        }
    }
};

けっこう作業してるとき毎回悩んでいたので φ(゚ー゚*) メモメモ

コメント : 0

コメントフォーム

トラックバック : 0

http://develo.org/mt/mt-tb.cgi/98

このページの先頭へ戻る