URLアドレスやメールアドレスなどを抜き出すための一般的な正規表現をまとめたサイトはありませんか?



perlではいくつかあるようなので、PHP(preg_match)で使えるようなサイトをお願いします。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2006/04/06 22:15:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ToMmY No.1

回答回数656ベストアンサー獲得回数19

ポイント20pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

これじゃだめですかね?

http://www.kt.rim.or.jp/~kbk/regex/regex.html

いろいろな言語についてのってます。

id:kuippa

すいません、正規表現演算子の例じゃなくて、パターンの方の例をお願いしたかとです。

メールアドレスの抜き出しパターンはこんなですよーみたいな。。。

>||

if (!preg_match('/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/',$mailadr)){

return 0;

}

||<

抜き出しにも、いろいろなパターンがあると思うので、それらがまとめられているページを探しています。

2006/04/06 18:53:38
id:bonlife No.2

回答回数421ベストアンサー獲得回数75

ポイント50pt

Perlの正規表現もpreg_matchも基本的な部分は同じはずですので、Perlのサンプルを流用してみてはどうでしょうか。

とは言いつつもPHPのサンプルを探してみました。

オフィシャルのpreg_matchのコメントにもメールアドレスのチェックの例はありました。

<?php
if(preg_match( '/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i' , $data)
) return true;
?>

蛇足になりますが、ご存知かと思いますがRFCの定義にあわせたメールアドレスの定義はひどく複雑になります。

正規表現でRFCに挑んだ例です。

参考になると思いますので類似質問も確認してみてください。

id:kuippa

ありがとうございます。

>>

$mail_regex =

q{(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\} .

q{\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][} .

q{^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x} .

q{80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-} .

q{\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(} .

q{\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\0} .

q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} .

q{\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} .

q{;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} .

q{^\x80-\xff])*\]))*};

<<

メールアドレスでコレは凹みますね。

実は最初にコレを見つけて、PHP版ないかなぁと探そうかと思ったわけです。

phpspotにありましたか、私的にはこの程度まとまっていれば充分です(^-^;

ありがとうございました。

回答者ははてな記法つかえないみたいですね・・・

2006/04/06 22:14:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません