WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:フォーム内のメールアドレスの入力確認

健太郎 [WriteDate : Fri Dec 8 01:30:59 2000]

今、フォームの中身に相手先のアドレスを入力して
それが正しいアドレスかどうかを判別するスクリプトを書いています。

正しいと言っても、@マークがあるかどうか、全角文字の使用はないかどうか、等のチェックですが。
ソースはこんな感じです。
------------------------------
<html>
<head>
<title>いらっしゃい</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script language="JavaScript">
<!--
function chk_radio(){

//メールアドレス
str=document.forms[0].elements[0].value;
if( str==""){
alert("メールアドレスを入れてね");
return;
}
if(str.search(/@/i) == -1){
alert("受け取る人のメールアドレスに@がありません");
return;
}
if(str.search(/[ア-ン|あ-ん|ア-ン|a-z|A-Z|0-9]/i) != -1){
alert("E-mailアドレスは 半角英数字で入力してください");
return;
}

}
//-->
</SCRIPT>
</head>

<body bgcolor="#FFFFFF">
<form name="test" method="post">
<table width="440" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td><img src="img/red_line.gif" width="1" height="25"></td>
<td><font>あなたのメールアドレス</font></td>
<td> 
<input type="text" name="address" size="30">
</td>
</tr>
</table>
<table width="330" border="0" cellspacing="0" cellpadding="0" height="40">
<tr> 
<td width="270" align="center"> 
<input type="reset" name="Reset" value="リセット">
<input type="button" name="Submit" value="送信" onClick="javascript:chk_radio();">
</td>
</tr>
</table>
</form>
</body>
</html>
----------------------------------

ここで問題が起こりました。
Mac版ネスケ4.0でこのスクリプトを開くと、強制終了を起こしてしまうのです。
WIN版ネスケ4.0は実行されるので問題はありません。

原因をあれこれ調べた所、全角文字を抜き出す

/[ア-ン|あ-ん|ア-ン|a-z|A-Z|0-9]/i

の箇所を消してやれば、Macのネスケ4.0は落ちないのですが、納得がいきません。

どうにかして、ネスケ4.0でも実行させる方法はないのでしょうか?
素人考えで「/[ア-ン|あ-ん|ア-ン|a-z|A-Z|0-9]/」の箇所を変数に代入して、
その変数をつかって検索をかけてやれば・・・と思うのですが書き方がわかりません。

hesuu = [ア-ン|あ-ん|ア-ン|a-z|A-Z|0-9];
if(str.search(/hensuu/i) != -1)

じゃあダメでしたし・・・・
解決方法がわかるかたがいらしたらご教授お願いします。

バギンズ [WriteDate : Fri Dec 8 02:43:02 2000]

全角でチェックするのではなく、半角英数以外の方でチェックしては?

例)
/[^0-9a-zA-Z\-\_\.\@]+/

あと、簡単なメールアドレスチェックなら、こんな感じのもいかがでしょう?

/^[0-9a-zA-Z\-\_]+@[0-9a-zA-Z\-\_\.]+\.[0-9a-zA-Z\-\_]+$/

#何か足りない記号がありましたら指摘してください。(^_^;)

ふじ [URL] [WriteDate : Fri Dec 8 03:29:18 2000]

JavaScript の 2byte 文字正規表現は、NN でどうにもマトモに
動かなかった経験があったので、口を挟めませんが(^^;

>#何か足りない記号がありましたら指摘してください。(^_^;)
@ の前(ユーザ名の部分)に . (ドット) が含まれるアドレス、
というのも世の中には結構存在します。 

私なら、サーバ側で(Perlの)Email::Valid モジュールでチェック、かなあ。


>変数に代入して、その変数をつかって検索をかけてやれば・・・と思うのですが

str=document.forms[0].elements[0].value; 
re = new RegExp("[ア-ン|あ-ん|ア-ン|a-z|A-Z|0-9]");
if (str.search(re) != -1) {
    document.write("Match!!");
}

うまく行くかどうかは、分かりませんが。
参考 : http://wakusei.cplaza.ne.jp/twn/wwwjsreg.htm


andi [WriteDate : Fri Dec 8 09:35:32 2000]

NS4で半角カナを正規表現で使用する場合は全て書かないと効果無かったと思います。
(例:/[アイウエオカキクケコ...゚。]/)

あとメールアドレスの最後が「.」で終るものも見たことあるような気がします。

バギンズ [WriteDate : Fri Dec 8 10:37:36 2000]

>ふじさん、andiさん
ご指摘ありがとうございます。
そうすると、メールアドレスの簡易チェックの正規表現は↓この程度でいいって事ですね。(まだあるのかも(^_^;))

/^[0-9a-zA-Z\-\_\.]+@[0-9a-zA-Z\-\_\.]+$/

andi [WriteDate : Fri Dec 8 12:02:52 2000]

う〜ん・・・でもやっぱり最後が「.」ってのは変な気もしますね。
自分で行っておきながら・・・(^^;

@の前に「.」が入るメールアドレスは僕も持ってます。
会社のメールアドレスです。

健太郎 [WriteDate : Mon Dec 11 16:56:39 2000]

皆さんいろいろなご意見ありがとうございました。
質問者の健太郎です、返事が遅くなってしまいすいません。

なにやら難しい関数が出てきて、JavaScriptの本とにらめっこ状態の末、Macのネスケ4.0は無視して・・・・・

と結論に至りました。
これだけいろんな方にお返事をいただいたのに本当にすいません。

CGIでも出来るという話を聞いたので、そっちで挑戦してみようと思います。

それにしても、なんでMacのネスケ4.0だけ・・・・
回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]