如何在批处理脚本中验证用户输入的电子邮件格式?

时间:2016-09-20 00:47:45

标签: batch-file scripting batch-processing

我想让用户在运行脚本之前输入他们的电子邮件地址,我就是这样做的:

:input
set /p email="Please enter your email address: "
(echo %email% | findstr "@ [] "%email:~7,1%"==""" >nul 2>&1) && (ECHO valid email >nul) || (echo This is not a valid email address.Please try again.) && GOTO Input

使用上面的代码,我可以检查任何空白区域,电子邮件中是否存在@和至少7个字符(即使用户输入虚拟a@b.com),但我不知道如何检查案例用户只需键入(@ b.com)@之前的任何内容。此外,我想禁用或沉默" TAB"对于输入字段中的用户,以便他们不能使用TAB。

我愿意以任何其他方式进行整个电子邮件格式检查吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试此解决方案:

  
@echo off
echo Type your e-mail address :
Set /p "Email="
Call :CheckValidMail %Email%
cls
IF "%errorlevel%" EQU "0" ( 
    Color 0A
    echo %Email% is valid 
) else (
    Color 0C
    echo %Email% is not valid
)
pause & Exit
::*********************************************************************************
:CheckValidMail <Email>
(
echo If IsValidEmail("%~1"^) = True Then
echo    Wscript.Quit(0^)
echo Else
echo    Wscript.Quit(1^)
echo End If
echo Function IsValidEmail(strEAddress^)
echo    Dim objRegExpr
echo    Set objRegExpr = New RegExp
echo    objRegExpr.Pattern = "^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[\w-\.]*[a-zA-Z0-9]\.[a-zA-Z]{2,7}$"
echo    objRegExpr.Global = True
echo    objRegExpr.IgnoreCase = False
echo    IsValidEmail = objRegExpr.Test(strEAddress^)
echo    Set objRegExpr = Nothing
echo End Function
)>"%tmp%\%~n0.vbs"
Cscript /nologo "%tmp%\%~n0.vbs"
Exit /b
::*********************************************************************************
相关问题