こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBS正規表現の方法

教えてください。

<内容>
VBSにてメールアドレスチェックをしているのですが、うまくいきません。

<仕様>
アカウント 大文字不可。
ドメイン  大文字不可。 最後は英文字で終わる。
.(ドット)とかで終わりにしない。

<ソース>
Set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = False
objRE.Pattern = "([0-9a-z_\.+-]*)(@?)([0-9a-z-\.]*)([a-z]+)"

Set Matches = objRE.Execute(mstrMailValue) Set objSM = Matches(0)

mAccount = objSM.SubMatches(0)
mAtmark = objSM.SubMatches(1)
mDomain = objSM.SubMatches(2) & objSM.SubMatches(3)

MsgBox (mAccount & mAtmark & mDomain)

If (mAtmark <> "@") Then
MailChk = False
Else
If (Len(mAccount) < 1) Or (Len(mAccount) >= 80) Then
MailChk = False
Else
If (Len(mDomain) <= 3) Or (Len(mDomain) >= 63) Then
MailChk = False
Else
If (mAccount & mAtmark & mDomain) <> mstrMailValue Then
MailChk = False
Else
MailChk = True
End If
End If
End If
End If

objRE.Patternがうまくいっていないと思います。
全て数値にすると、エラー(VBSがストップ)する。
どなたか教えてくださいませ。m(-_-)m
上記のソースよりも他の手があれば教えてください。

投稿日時 - 2004-04-06 11:44:46

QNo.824304

すぐに回答ほしいです

質問者が選んだベストアンサー

>全て数値にすると、エラー(VBSがストップ)する。
マッチしないんですね。
だから
Set objSM = Matches(0)
がエラーになるんですね。

Set Matches = objRE.Execute(mstrMailValue)
dim m(4)
dim i
i=0
For Each Match in Matches
m(i) = Match.Value
i = i + 1
next
mAccount = m(0)
mAtmark = m(1)
mDomain = m(2) & m(3)

こういうのは?

投稿日時 - 2004-04-13 00:31:59

お礼

ありがとうございました。大変役に立ちました。

投稿日時 - 2004-04-22 18:42:33

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問