- PR -

JavaScriptでの正規表現(全角文字・メールアドレス)について

1
投稿者投稿内容
ゴンザレス
会議室デビュー日: 2004/02/25
投稿数: 4
投稿日時: 2004-03-03 21:13
C#にて全角文字とメールアドレスの正規表現のチェックを以下のように行っていました。
全角文字: "^[  ]*[^ -~。-゚]*[  ]*$"
メールアドレス: @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

JavaScriptでも全角文字とメールアドレスの正規表現のチェックを行いたいのですが、
C#の時の正規表現を用いたり色々考えてやってみましたが、上手くいきません。
JavaScriptでは全角文字やメールアドレスの正規表現のチェックは難しいのでしょうか?
どなたかお知恵を拝借したく。
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-04 08:14
引用:

ゴンザレスさんの書き込み (2004-03-03 21:13) より:

C#の時の正規表現を用いたり色々考えてやってみましたが、上手くいきません。


 どういうことをやってみて、期待する結果に対して、どういう結果が返ってきましたか?

 MSDNに、.NETでの正規表現と、ECMA(JScript)での正規表現が出ています。それを見比べてみては?


 全角文字のチェックは、過去に質問があったと思います。


 ところで、MSDNにまさしく「例:電子メール形式の確認」というトピックがあるのですが、そこに上がっている形式とはずいぶん違いますが、大丈夫でした?
oka
会議室デビュー日: 2005/10/18
投稿数: 5
投稿日時: 2005-11-24 23:07
こんばんは。okaです。

正規表現に関してちょうど話題に上っていたので確認させてください(タイムラグはかなりありますが)。

> ところで、MSDNにまさしく「例:電子メール形式の確認」というトピックがあるのですが、そこに上がっている形式とはずいぶん違いますが、大丈夫でした?

例:電子メール形式の確認
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpguide/html/cpconexampleconfirmingvalidemailformat.htm
もそうですが、
例: 入力文字列の整形
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpguide/html/cpconexamplecleaninginputstring.htm
も期待通りの動きをしてくれません。

ちょっとべたべたですが、

{// "電子メール形式の確認"の場合
string target = "テスト@abcdef.or.jp";
bool ret = Regex.IsMatch(target, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}



{// "入力文字列の整形"の場合
string target = "テスト@abcdef.or.jp";
string ret = Regex.Replace(target, @"[^\w\.@-]", "");//全角文字は取り除くと言われているのに・・・
}

もだめです。

.NET Framework 1.1 SP1で試しています。
要はメールアドレスの文字としての整合性をチェックしたいだけなのですが・・・。

ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2005-11-25 08:45
「メールアドレス 正規表現」でぐぐってみてください。
完全には出来ないので「あきらかに変なのをはじく」というのが基本です(じゃないと正規アドレスまではじいてしまう)。…状態を保存するパーサーでも書けば出来ますが。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-25 09:00
引用:

ゴンザレスさんの書き込み (2004-03-03 21:13) より:

メールアドレス: @"w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"


"w+([-+.]w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
oka
会議室デビュー日: 2005/10/18
投稿数: 5
投稿日時: 2005-11-25 09:25
yaさん、レスありがとうございます。
結局「メールアドレスに一致する正規表現」にのっている、
$mailre = '^[\x01-\x7F]+@(([-a-z0-9]+\.)*[a-z]+|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])';

を利用することにしました。

じゃんぬねっとさん、申し訳ありません。投稿の意図がわかりませんでした(ゴンザレスさんの記述とじゃんぬねっとさんの引用が既に異なっているようなので)。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-25 09:45
引用:

okaさんの書き込み (2005-11-25 09:25) より:

じゃんぬねっとさん、申し訳ありません。投稿の意図がわかりませんでした(ゴンザレスさんの記述とじゃんぬねっとさんの引用が既に異なっているようなので)。


引用または引用返信画面では「\」が消えてしまうみたいですね。
投稿元と全く同じとは気付かずに返信してしまいました... (;_ _)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
oka
会議室デビュー日: 2005/10/18
投稿数: 5
投稿日時: 2005-11-25 17:10
okaです。自己フォローです。

(メールアドレスに一致する正規表現 から)
$mailre = @"^[\x01-\x7F]+@(([-a-z0-9]+\.)*[a-z]+|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])";



(ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpguide/html/cpconexampleconfirmingvalidemailformat.htm から)
@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"

の両方を使うことにしました。
というのも、「メールアドレスに一致する正規表現」だけでは’a]b@cdefg.de.jp’などがはじけなかったからです。
まぁいずれにせよ完全なものは大変そうなのでこれ以上詮索するのはやめにします。

1

スキルアップ/キャリアアップ(JOB@IT)