問題
regexp1やregexp2にマッチする様な文字列を、str1とstr2に代入しましょう。
var regexp1 = /\w{3}\s?\d+/;
var regexp2 = /\d{3}-\d{4}\s*\w/;
var str1 = 'aaa 1';
var str2 = '222-1111 a';
var result1 = regexp1.test(str1);
var result2 = regexp2.test(str2);
regexp1 の方の最初の条件は、\w(windowsでは ¥w )です。これは文字を表していますので、文字なら何でもマッチします。僕は a にしました。
次の条件は {3} です。これは この直前の文字を 3つ繰り返すので、さっきの a が aaa になります。
次は、\s(¥s)です。これは 空白スペースを表しています。その次に ? がついていますから、空白スペースが 0~1個入っていれば マッチします。ということは 空白スペース無しでもOKです。
次が、\d(¥d)です。これは 数字を表しますので、僕は 1にしました。最後に付いている + は直前の文字を 1回以上繰り返す意味ですので、僕は 1回だけにして、
僕は最終的に 'aaa 1' としました。'@@@ 99999' 等でもマッチします。
regexp2 の方でつまずいてしまったのですが、最初の \d{3}(¥d{3})は数字を3個繰り返す条件です。
次の - を [-] の記号と勘違いしてしまったのですが、[] に挟まれていない - はこの文字自身を表すだけですので、- が入ります。
次は最初と同じ書き方の数字を4個繰り返す条件です。
次の \s(¥s)は空白スペースです。* の記号がついていますから、0個以上繰り返していればマッチします。つまり空白スペース 無しでもOK です。
最後の \w(¥w)は文字です後ろに何もついていないので、何の文字が何個ついていてもマッチします。
僕は最終的に '222-1111 a'としました。 '999-0000 zxcvbnm' 等でもマッチします。
正規表現は ここで出題されている以外にも色々あって、ちょっと覚えきれませんが
目標にしている ショッピングサイトを作る時に 商品の発送先などの 入力フォームで 必要になりそうなので、 構文的な所は覚えておいて、条件の書き方は その都度調べながらでもしっかり身につけたい所です。
0 件のコメント:
コメントを投稿