正規表現についての質問です - PHPプロ!Q&A掲示板

2202

  • 0P

正規表現についての質問です

質問日時 / 2009年8月12日 19:40 (最終編集:8月13日 00:59)    回答数 / 10件

Questioner:  dejavu  このエントリーをはてなブックマークに追加 

キーワード / 正規表現   

  1. !ereg("^[0-9,A-Z,a-z][0-9,a-z,A-Z,_,\.,-]+@[0-9,A-Z,a-z][0-9,a-z,A-Z,_,\.,-]+\.(com|net|org|tv|jp)$",$mail))

この部分なのですが、あるところではA-Z,a-zの順なのに対してa-z,A-Zと正反対に書かれている部分があります。
順番っていう事なのでしょうか。
こういう書き方でないとE-mailを書く欄がいつまでもエラー表示になったままです。
後、comやnetなどの最後の部分ですが、他にもあれば教えて頂けないでしょうか。


ツリー一覧

┣A01kaitau正規表現 > A-Z,a-zの順なのに対してa-z,A-Zと正反対
┃┗A01-1dejavuアドバイスありがとうございます。 あれれ!? さっ
┃ ┗A01-1-1shimix>どうすれば、この問題を解決できるのでしょうか。
┃  ┗A01-1-1-1dejavu貴重なアドバイスありがとうございます。 じっくりと
┣A02shimix>上のソースコードだとチェックして送信するとチェッ
┃┗A02-1dejavuアドバイスありがとうございます。 >正規表現のパ
┃ ┗A02-1-1shimix>これは何をしろ、とおっしゃっているのでしょうか。
┃  ┗A02-1-1-1dejavu再度のアドバイスありがとうございます。 なるほど。
┗A03tezcello文字リスト[ ]内では \. ではなくて . でよかったよう
 ┗A03-1dejavuアドバイスありがとうございます。 >[ ] 内に ,

回答一覧

並び替え:

A01 満足
answererkaitau [8月12日 20:16] (最終編集:8月12日 20:21)

正規表現
> A-Z,a-zの順なのに対してa-z,A-Zと正反対に書かれている部分
どちらでも結果は変わりません。(そもそもこのカンマなんのためにあるんだろう?区切りのつもりなら意味なしていないのだけど。)
それくらい正規表現のパターンの仕様調べればわかると思いますけど。

> こういう書き方でないとE-mailを書く欄がいつまでもエラー表示になったままです。
どういう書き方をしたんですか?

> 後、comやnetなどの最後の部分ですが、他にもあれば教えて頂けないでしょうか。
山ほどあると思いますけど・・・全部入れるので?
どこをたどっていけば一番正確な公開情報なのかは自信がありませんが、一例としては
http://www.iana.org/domains/root/db/
が参考になるかと。


誤字
> 約2時間くらい上下を見比べて違いを探しているのですが、全く見つかりません。

value='$mag1'".
value='$mag2'".
value='$mag3'".
ここには実際には何がはいっているんですかいな?話はそれから。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerdejavu [8月13日 00:58] (最終編集:8月13日 01:15)

アドバイスありがとうございます。
あれれ!?
さっきまでA-Z,a-zの順番だとエラー表示がでたんですけど、誠にお恥ずかしい限りです。
, を削除して並び替えても今度は通りました。

>山ほどあると思いますけど・・・全部入れるので?

URLのサイト拝見ました。
物凄い数ですね。
これだと、最後の部分を指定すると、最後が当て嵌まらないE-mailアドレスはエラーになってしまいますね。
どうすれば、この問題を解決できるのでしょうか。

誤字はやはり羞恥心をさらけ出しているので削除しようと思います。
改めて入力しなおしたところ無事エラーなく表示されました。
何て馬鹿なのでしょう。初めからそうすれば良かったです。
本当にお手を煩わせて大変申し訳ありませんでした。

この意見に回答する

ツリーへ TOPへ

A01-1-1 満足
replyershimix [8月13日 01:33]

>どうすれば、この問題を解決できるのでしょうか。

トップレベルドメインのチェックをしない。

  http://neta.ywcafe.net/000791.html

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyerdejavu [8月13日 02:38]

貴重なアドバイスありがとうございます。
じっくりとURLのサイトを読ませて頂き、大変勉強させてもらいました。
あまり多くを語るとボロがでそうなのでここまでにしておきますが、これからはE-mailのチェックに関してはURLのサイトの内容を踏まえてチェックしていこうと思います。

この意見に回答する

ツリーへ TOPへ

A02 満足
answerershimix [8月12日 21:32] (最終編集:8月12日 21:42)

>上のソースコードだとチェックして送信するとチェックがリセットしたように消えてしまいます。
>下のソースコードだとチェックして送信すると先へ進めます。

スクリプトソースを見るよりも、ブラウザに返されたHTMLのソースを見比べてみてはどうでしょう。そういうHTMLソースを返すようにスクリプトが書かれているわけですから。

ちなみに下のソースでは$mag1でなくmag1と書かれているように思えますが、転記するときのtypoでしょうか?


(追記@個人的感想)
正規表現のパターンは順番はありませんが、asciiコード順(0-9A-Za-z)に書く方が素直な気がします。

トップレベルドメインはたまに増えますからね。ちゃんと保守するのであればいいですが、そうでなければチェックしない方がいいと思いますよ。

この意見に回答する

ツリーへ TOPへ

A02-1
replyerdejavu [8月13日 01:31]

アドバイスありがとうございます。

>正規表現のパターンは順番はありませんが、asciiコード順(0-9A-Za-z)に書く方が素直な気がします。

二の鉄を踏まないためにも、shimixさんの言葉をちゃんと足りない脳みそに叩き込んでおきます。
ただ、苦し紛れの言い訳ですが、何故だかエラーが出てしまい、A-Zとa-zを入れ替えたら正常に動いたので順番に違いがあると思い込んでしまい、恥ずかしい質問をしてしまいました。

1つ分からない部分があります。
>スクリプトソースを見るよりも、ブラウザに返されたHTMLのソースを見比べてみてはどうでしょう。そういうHTMLソースを返すようにスクリプトが書かれているわけですから。

これは何をしろ、とおっしゃっているのでしょうか。
見比べる部分が間違っているのは理解できましたが、どの部分かが今一分かりません。
申し訳ありませんが、再度アドバイスを頂ければ幸いです。

ちなみに、誤字の部分に関しては改めて打ち直す事にしました。
それにより、問題なく動作させる事ができました。
大変なお手間を取らせてしまった事を深くお詫び申し上げます。

この意見に回答する

ツリーへ TOPへ

A02-1-1 満足
replyershimix [8月13日 01:46]

>これは何をしろ、とおっしゃっているのでしょうか。

echoprintで出力している内容が自分が思っていたものと違う・・という状況ですよね。

であれば、スクリプトがブラウザに返しているHTMLソース(ブラウザの表示→ソースで確認できますよね)を見比べるのが早いんじゃないかということです。$mag1とmag1のtypoなどは、スクリプトのソースだと気付きにくいかもしれませんが('mag1'という文字列自体がブラウザに返ってますから)HTMLソースを見ればすぐに気付けるハズです。


(蛇足)
それよりも『レスが付いたあとで元質問を編集する』のはちょっとどうなんだろうと思いますけど。

この意見に回答する

ツリーへ TOPへ

A02-1-1-1
replyerdejavu [8月13日 02:17]

再度のアドバイスありがとうございます。
なるほど。shimixさんの言いたい事が理解できました。

>それよりも『レスが付いたあとで元質問を編集する』のはちょっとどうなんだろうと思いますけど。

そうですね。
でも、あまりにも恥ずかしい質問だったと気がついたので、どうしても消さずにはいられませんでした。
また、問題行動をしてしまったのでしょうか。
注意してもらえるところは極力直していきますので宜しくお願い致します。

この意見に回答する

ツリーへ TOPへ

A03 満足
answerertezcello [8月12日 21:58]

文字リスト[ ]内では \. ではなくて . でよかったような記憶ですが?
[a-zA-Z]と[A-Za-z]は同じです。
調べ直していたら、こんなのを見つけてしまいました。
http://www.kt.rim.or.jp/~kbk/regex/regex.html#CCLASS

[ ] 内に , を入れるとこれも文字リストの一つと判断されるでしょうから、まずいでしょう。
例えば、,,,@,.com はOKとなってしまいますね。
rfc的にOKなのかは不明ですが、NGとしたいアドレスな気がします。


$mag1, $mag2, $mag3 と
$mag01, $mag02, $mag03 と
$_POST['maga'](または $_GET['maga'])
の関係を示して欲しいです。

value='$mag1' とする必然性を感じませんねぇ、form から送られた値をどのように $mag01,... に割り当てるかで使っているんでしょうけど。

この意見に回答する

ツリーへ TOPへ

A03-1
replyerdejavu [8月13日 01:52]

アドバイスありがとうございます。

>[ ] 内に , を入れるとこれも文字リストの一つと判断されるでしょうから、まずいでしょう。
>例えば、,,,@,.com はOKとなってしまいますね。
>rfc的にOKなのかは不明ですが、NGとしたいアドレスな気がします。

なるほど、今回お恥ずかしい質問をしましたが、それにより大きな収穫を得る事ができました。

>value='$mag1' とする必然性を感じませんねぇ、form から送られた値をどのように $mag01,... に割り当てるかで使っているんでしょうけど。 

『value='$mag1' とする必然性を感じませんねぇ』とはどういう意味なのでしょうか。
宜しければ、具体的な部分をアドバイスして頂けると大変助かるのですが。
やはり、部分的なソースコードを取り出して貼り付けるより全部のソースコードを貼り付けた方が分かりやすいのでしょうか。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)