[PHP-users 34977] Re: 正規表現におけるアスタリスクのマッチについて

Kimio Mizuguchi mizuguchi.kimio @ ytv.home.ne.jp
2010年 1月 27日 (水) 16:32:33 JST


水口と申します。

私なら、ereg() で "^[^\*]*$" と書きます。

<?php
if(ereg("^[^\*]*$","abcd*1234")){
print "NO *";
}
else{
print "Includes *";
}
?>

On Wed, 27 Jan 2010 16:10:10 +0900 (JST)
Kentaro Ohkouchi <nanasess @ fsm.ne.jp> wrote:

> 大河内と申します.
> 
> 正規表現関数を使用して「文字列の中にアスタリスクを含む場合 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 mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3





PHP-users メーリングリストの案内