正規表現をさらに詳しく
正規表現の基礎的な部分を書いたけど、それについてさらに詳しく書いていくよ
より複雑な正規表現
var pass = 'Suga1234'; pass.match(/[a-z\d]{8,}/i); //=>["Suga1234"]
は?意味わからん
てことで1つずつ分解していく
...
[a-z]: [ ]内の文字のどれか1個がレシーバの文字列内にあればマッチする。a-zというのはアルファベットaからzのいずれか、という意味。
\d:レシーバの文字列内に数字があればマッチ。
{n,m}:直前の文字が少なくともn回、多くてもm回連続で出現するものがあればマッチする。
i :オプション または修飾子、フラグと呼ばれるもので、最後に加えると大文字と小文字を区別しなくなる。
つまり、大文字と小文字関係なく、英数字が少なくとも8回以上連続で出現した場合マッチするということ。うーんこう書くとわかりやすいよね。
...
オプションについて
iのようなオプションは他にも色々あるので、書いておくよ。
g:グローバルオプションと言われるもの。通常の正規表現では複数マッチしても、最初にマッチしたものしか返さないが、これを使う事で複数マッチに対応する。
var number = '123456789'; number.match(/\d{1,3}/g); //=> ["123","456","789"]
m:複数行の文字列に対応する
"123\n456\n789".match(/^456/) // マッチしない "123\n456\n789".match(/^456/m) // マッチする
改行がある場合だと、先頭から最初の改行までしか検索されないっぽい。
それを解決するのがmオプションってこと。
y:lastindexで指定した位置から検索を開始する。
ar re = /Test/y re.lastIndex = 0; re.test( 'Test' ) // true re.lastIndex = 2 re.test( 'xTest' ) // false
これは便利そう。要チェック。
...
ブログ初めて一日目。慣れてなくて結構時間かかって疲れたけど、ノートに書くより詳しく色々調べれたりして、アウトプットする事で、別の用語もインプットされるので、結構メリットがある。もっといろんなことを書いて、どんどん上達していくぞ!