[PHP-users 34974] 正規表現におけるアスタリスクのマッチについて
Kentaro Ohkouchi
nanasess @ fsm.ne.jp
2010年 1月 27日 (水) 16:10:10 JST
大河内と申します.
正規表現関数を使用して「文字列の中にアスタリスクを含む場合 false」と
いうパターンを書こうとしたところ, 以下のような動作になりました.
<?php
$word = 'word(*';
var_dump(preg_match('/^[a-zA-Z0-9 \\,.\(\)-\/]+$/', $word));
var_dump(preg_match('/^[\/a-zA-Z0-9 \\,.()-]+$/', $word));
?>
実行結果:
int(1)
int(0)
パターンの中のスラッシュ(/)の位置を, ] の直前にすると true を返し, ]
の直前以外の場所に置くと, false を返します.
ereg 関数でも, 同様です.
<?php
$word = 'word(*';
var_dump(ereg('^[[:alnum:][:space:]\\,.()-/]+$', $word));
var_dump(ereg('^[[:alnum:][:space:]/\\,.()-]+$', $word));
?>
実行結果:
int(1)
bool(false)
スラッシュの位置によって, 結果が異なるのは仕様でしょうか?
何故, このような動作になるのか, いまいち理解できません.
仕様であれば, どのあたりのドキュメントを参照したらよろしいでしょうか?
ご教示頂ければ幸いです.
よろしくお願い致します.
--
大河内健太郎(Kentaro Ohkouchi)
E-mail nanasess @ fsm.ne.jp
PHP-users メーリングリストの案内