アフィリエイト広告を利用しています

2017年10月15日

preg_match正規表現C


if (preg_match("/^[0-9a-zA-Z]+$/", $var))

/^[0-9a-zA-Z]+$/ はどういう意味?

^ 行頭
[0-9] 数字1文字
[a-z] 小文字のアルファベット1文字
[A-Z] 大文字のアルファベット1文字
+ 1回以上の繰り返し
$ 行末

先頭から最後までアルファベットか数字の文字列ならマッチするという意味?
^は否定の意味もあり、どちらになるのかよく分からない。そこで試してみた。


// 1.全角文字
if (preg_match("/^[0-9a-zA-Z]+$/", "全角文字")) {
 echo "OK マッチしました。";
} else {
 echo "NG マッチしませんでした。";
}

// 2.記号含む
if (preg_match("/^[0-9a-zA-Z]+$/", "Abc@_*123")) {
 echo "OK マッチしました。";
} else {
 echo "NG マッチしませんでした。";
}

//3 半角英数字のみ
if (preg_match("/^[0-9a-zA-Z]+$/", "AbcXyz123")) {
 echo "OK マッチしました。";
} else {
 echo "NG マッチしませんでした。";
}

3がマッチしました。

/^[0-9a-zA-Z]+$/ は語頭から語末までに半角英数字

という意味のようだ。

否定を意味する記号と
語頭を意味する記号が
なぜ同じなのだろう。

分かりにくくてしようがない。

(php 5.4で確認)




posted by db-engineer at 00:00 | Comment(0) | PHP

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

検索
最新記事
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド