こぶたのラッパ » Blog Archives

Tag Archives: JavaScript

プログラミング 学習 発表、ニュース

Ajaxプログラミング講座と「団話」

Published by:

リアルタイムチャットシステムの団話(だんわ)っていうのをリリースしました。
今年の春頃に、必要があってちょっと作ったものですが、数あるリアルタイムチャットと比べて、これがすごい!!というのは今のところありません。
ただ、来週から開催予定の「Ajaxプログラミング講座」で活用できないかと、公開サーバー上に上げてみたというところです。

で、「Ajaxプログラミング講座」ですが、要するに今どきのWebアプリを作るときにはマスト技術であるJavaScriptをみっちり学ぼうという趣旨のものです。

夜19時から21時半までの2時間半×4回の日程で(場所は四谷三丁目)、まだまだまだ空きがありますので、気になる方はご参加をご検討くださいませ。

参加できないよ~という方も、団話でもしかしたら感触を見られるかもしれませんので、乞うご期待!
ちっとも団話に上がってこない可能性もありますので、そこのところはご容赦を~。

団話の今後の展開としては、API化して、いくつか検討中の仕組みに組み込もうかと思っています。

プログラミング

「PHP使いはもう正規表現をblogに書くな」のメールアドレスチェック用正規表現をPHP用に書きなおす

Published by:

メールアドレスをチェックする機能を作るときに、これまで2度「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ / 404 Blog Not Foundを参考にさせていただきましたが、何故か(よっぽどお怒りだったのか?)PHPでは直接使えない記述になっていましたので、毎回自分で修正して使っていました。
今後も使いたい正規表現ですので、PHPでの実装コードと、JavaScript版の実装コードをメモします。

小飼 弾さんの作られたオリジナル正規表現

/^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$/

PHP用の実装コード

if (!preg_match('/^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&\'*+\/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&\'*+\/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&\'*+\/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&\'*+\/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$/', $email)) {
    $error = '正しいメールアドレスを入力してください。';
}

ereg関数を使えばオリジナル正規表現のままでよいのですが、preg*の方が一般的だと思います。
ここでは「’」と「/」をエスケープしています。

JavaScript用の実装コード

if (!email.match(/^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+\/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+\/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+\/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+\/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$/)) {
    error = "正しいメールアドレスを入力してください。";
}

JavaScriptは正規表現リテラルが使えますので、「/」のみをエスケープしています。

ただ、この正規表現では「da.me..@docomo.ne.jp」といったRF2822非準拠の携帯メールアドレスがエラーで弾かれるんですよね。
これをdocomoの変メールへの対応バージョンは・・・次の人にまかせた!