リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

16-4. JavascriptとPHPによる検証とエラー処理④正規表現 その2

つづきやります。

1-1. 正規表現の分解


前回やった文字クラスを勉強したら、複数のhtmlタグがある場合のマッチングを解決するより良い方法も増えます。

正規表現の分解

正規表現 説明
/ 正規表現の始まりを示す
そのままマッチ
[^>] 右山かっこ以外のすべての文字にマッチ
+ 1個以上の[^>]にマッチ
そのままマッチ
/ 正規表現の終わりを示す

◎validateUsername関数で使用した正規表現の分解

正規表現 説明
/ 正規表現の始まりを示す
[ 文字クラスの開始
^ 角カッコ内をすべて反転
a-z すべてのアルファベット小文字
A-Z すべてのアルファベット大文字
0-9 すべての数字
_ 1つのアンダースコア
] 文字クラスの終了
/ 正規表現の終わりを示す

1-2. 全体的な修飾子


正規表現では以下に示す修飾子も使用できます。

/g:
グローバルな検索を可能にします。replace関数の使用時にこの修飾子を指摘すると、最初に一致したものだけではなく、一致したすべてのものを置き換えることが出来ます。

/i:
ケースインセンシティブのマッチングを行います。これは、/[a-zA-Z]/の代わりに、/[a-z]/iか/[A-Z]/iの指定でよくなるということです。

/m:
キャレットとドル記号が対象ストリング内の改行の前と後とマッチする複数行モードの検索を可能にします。
通常は、^はストリングの行頭に、$は行の末尾にのみマッチします。


1-3. Javascriptでの正規表現の使用


javascript正規表現で使用されるメソッドはほとんどの場合testとreplaceです。testは与えられた引数が正規表現にマッチするかどうかを教えてくれるだけですが、replaceは2つめのパラメータとしてマッチしたテキストを置換するストリングを取ります。
replaceも多くのメソッド同様、戻り値として新しいストリングを生成し、元の入力は変更しません。

◎testを使用
//大文字小文字を区別せず"cats"が見つかったらtrueを返す
document.write(/cats/i.test("Cats are fun. I like cats."))

◎replaceを使用
document.write("Cats are fun. I like cats.".eplace(/cats/gi,"dogs"))

1-4. PHPでの正規表現の使用


PHPでよく使用される正規表現関数にはpreg_matchやpreg_match_all、preg_replaceがあります。
たとえば、ストリングに"catsが含まれるかどうかを大文字小文字の区別なく調べるには、preg_match関数を次のように使用します。

&n = preg_match("/cats/i!,"Cats are fun. I like cats.");


いじょおおおおおおおおおおおおおおおおおおおおおお
はああ