TOP - JavaScript - 正規表現 - 特殊な字句

正規表現中に特殊な機能の字句を入れることにより、位置を条件としたマッチや回数を条件としたマッチを試みる事が可能です。
以下のリストの字句は、右側に記載の位置・条件・字句にマッチします。
^       : 文字列(/m指定時は「行」)の先頭
$       : 文字列(/m指定時は「行」)の末尾
\b      : 単語境界
\B      : 単語境界以外

{n,m}   : n回以上m回以下の繰り返し
{n,}    : n回以上の繰り返し
{n}     : n回の繰り返し
*       : 0回以上の繰り返し
+       : 1回以上の繰り返し
?       : 0回または1回の繰り返し

\n      : 改行文字
\r      : 復帰文字
\t      : タブ
\f      : 改ページ文字
\d      : 数字
\D      : 数字以外
\w      : 単語構成文字(英数字)
\W      : 単語構成文字以外
\s      : 空白文字
\S      : 空白文字以外
.       : 改行以外の全ての文字

(例1 位置関連)
<SCRIPT type="text/javascript">
<!--
    function btnclick1()
    {
        var s = "";

        var s_regex = "test1 test2 test3 test4 test5";            // パターンマッチ対象文字列

        var a_reg = s_regex.match(/^te\w+/);                      // 文字列先頭にマッチ

        s += "/^te\\w+/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/te\w+$/);                          // 文字列末尾にマッチ

        s += "/te\\w+$/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/\w+st\d\b/);                       // 単語境界にマッチ

        s += "/\\w+st\\d\\b/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/te\B\w+/);                         // 単語境界以外にマッチ

        s += "/te\\B\w+/ にマッチした文字列 : " + a_reg[0] + "\n";

        alert(s);
    }
//-->
</SCRIPT>

(例2 位置関連)
<SCRIPT type="text/javascript">
<!--
    function btnclick2()
    {
        var s = "";

        var s_regex = "test1 test2 test3 test4 test5";            // パターンマッチ対象文字列

        var a_reg = s_regex.match(/(test\d\s){2,3}/);             // 2回以上3回以内の繰り返しにマッチ

        s += "/(test\\d\\s){2,3}/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/(test\d\s){2,}/);                  // 2回以上の繰り返しにマッチ

        s += "/(test\\d\\s){2,}/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/(test\d\s){2}/);                   // 2回の繰り返しにマッチ

        s += "/(test\\d\\s){2}/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/(test\d\s)*/);                     // 0回以上の繰り返しにマッチ

        s += "/(test\\d\\s)*/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/(test\d\s)+/);                     // 1回以上の繰り返しにマッチ

        s += "/(test\\d\\s)+/ にマッチした文字列 : " + a_reg[0] + "\n";

        a_reg = s_regex.match(/(test\d\s)?/);                     // 0回または1回の繰り返しにマッチ

        s += "/(test\\d\\s)?/ にマッチした文字列 : " + a_reg[0] + "\n";

        alert(s);
    }
//-->
</SCRIPT>

(例3 位置関連)
<SCRIPT type="text/javascript">
<!--
    function btnclick3()
    {
        var s = "";

        var s_regex = "test1:;{} test2";             // パターンマッチ対象文字列

        var a_reg = s_regex.match(/\d/);             // 数字にマッチ

        s += "/\\d/ にマッチした文字列 : " + a_reg[0] + "\n";

        var a_reg = s_regex.match(/\D/);             // 数字以外にマッチ

        s += "/\\D/ にマッチした文字列 : " + a_reg[0] + "\n";

        var a_reg = s_regex.match(/\w/);             // 単語構成文字にマッチ

        s += "/\\w/ にマッチした文字列 : " + a_reg[0] + "\n";

        var a_reg = s_regex.match(/\W/);             // 単語構成文字以外にマッチ

        s += "/\\W/ にマッチした文字列 : " + a_reg[0] + "\n";

        var a_reg = s_regex.match(/\s/);             // 空白文字にマッチ

        s += "/\\s/ にマッチした文字列 : " + a_reg[0] + "\n";

        var a_reg = s_regex.match(/\S/);             // 空白文字以外にマッチ

        s += "/\\S/ にマッチした文字列 : " + a_reg[0] + "\n";

        var a_reg = s_regex.match(/./);              // 改行文字以外にマッチ

        s += "/./ にマッチした文字列 : " + a_reg[0] + "\n";

        alert(s);
    }
//-->
</SCRIPT>


Copyright(C) 2006-2011 CLAYPOT. All Rights Reserved.