10分で分かる JavaScript正規表現入門

2011/09/22 15:37 Update
TAGS: JavaScript | 正規表現 | 文字列 | match | RegExp
JavaScript正規表現のパターン、書き方、正規表現による置換、分割などもっとも基本的なJavaScript正規表現の使い方をサンプルから解説します。

1)正規表現のパターン(時間:5分)
 ※一通り目を通した程度でよい。

 正規表現のパターンについて、こちらの記事をご参照ください。
  Java正規表現によくあるマッチ パターン
 ※Java向けと思われているかもしれませんが、JavaScriptでも通用します。

2)RegExp正規表現オブジェクト(時間:1分)
  regexp = new RegExp(patern[, flag])
  解説:
  patern:正規表現パターン
  flag:フラグ。"i"、"g"、"m" の組み合わせを指定します。
      i 大文字・小文字を区別しない
    g 繰り返し検索
    m 複数行に対して検索
 例:
  regexp = new RegExp("[0-9]*", "g");    //数字([0-9]:0から9まで) 任意個(*:繰り返し)

3)JavaScriptの正規表現の書き方(時間:1分)
  3.1)RegExpオブジェクトを用いた書き方
  "文字列".match(RegExp)
  例:
    value = "aabbcc123456";
    regex = new RegExp("bc", "i");
    if (value.match(regex)) {
        alert("bcが含まれています");
    }


  
  3.2)RegExpオブジェクトを用いない書き方
  "文字列".match(/patern/[flag])
  ※戻り値:配列(Arrayオブジェクト)。正規表現に合致した文字列を配列。マッチしない場合、nullが返される
  ※[flag]:省略可能
  ※flagは"i"、"g"、"m"の組み合わせで指定可能

  例:
    value = "abcdABCD";
    var ret = value.match(/bc/ig);    //value.match(/bc/)
    if (ret != null) {
        alert("bcが含まれています:" + ret);        //ret=[bc,BC]
    }

4)マッチした結果の取得
  ※5)をご参照ください。

5)グループの定義(時間:1分)
 例:
    var ret = "abcd123ABCD".match(/d([0-9]*)A/);    //【d+複数の数字+A】にマッチする文字列を検索。戻り値:[d123A, 123]配列    
    alert(ret);    //ret[1]=123

    //RegExp.$n    :直前の正規表現のマッチした結果、n番目の (...) に対応する文字列を返す
    alert(RegExp.$1);    //グローバル変数。123

6)正規表現による置換(時間:1分)
 例:
    alert("abcdABCD".replace(/ab/i,"**"));    //大小区別しないabというパターンを**に置換する
    //**cdABCD        結果:**cdABCD というメッセージが表示されます。
    alert("abcdABCD".replace(/ab/ig,"**"));    //大小区別しないabというパターンを**に繰り返しで置換する
    //**cd**CD        結果:**cd**CD というメッセージが表示されます。

7)正規表現による分割(時間:1分)
 例:
    alert("a1b2c3d".split(/[0-9]*/));    //数字区切りで分割。戻り値:[a,b,c,d]配列


サンプル
test.html
<html>

<body>
<script type="text/javascript">
    alert("abcd123ABCD".match(/d([0-9]*)A/));    //d123A, 123
    alert("a1b2c3d".split(/[0-9]*/));    //a,b,c,d

    var ret = "abcdABCD".match(/bc/ig);    //"abcdABCD".match(/bc/)
    if (ret != null) {
        alert("bcが含まれています:" + ret);    //ret=[bc,BC]
    }

    alert("aabbcc123456".match(/bc/i));    //bc

    if ("aabbcc123456".match(/bc/i)) {//"aabbcc123456".match(/bc/)
        alert("bcが含まれています");
    }
    
    alert("abcdABCD".replace(/ab/i,"**"));
    //**cdABCD
    alert("abcdABCD".replace(/ab/ig,"**"));
    //**cd**CD

</script>
</body>
</html>

.

Sponsored Link


有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation