如何在批处理脚本中验证用户输入的电子邮件格式?
How to validate user input email format in a batch script?
我想让用户在 运行 脚本之前输入他们的电子邮件地址,我正在这样做:
: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
使用上面的代码,我可以检查任何空白 space,电子邮件中是否存在 @ 和至少 7 个字符(即即使用户键入虚拟 a@b.com),但我我不确定如何检查用户可以只键入 (@b.com) 的情况,而@之前什么也没有。此外,我想为输入字段中的用户禁用或静音 "TAB",以便他们无法使用 TAB。
我愿意用任何其他方式检查整个电子邮件格式吗?
您可以试试这个解决方案:
@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
::*********************************************************************************
我想让用户在 运行 脚本之前输入他们的电子邮件地址,我正在这样做:
: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
使用上面的代码,我可以检查任何空白 space,电子邮件中是否存在 @ 和至少 7 个字符(即即使用户键入虚拟 a@b.com),但我我不确定如何检查用户可以只键入 (@b.com) 的情况,而@之前什么也没有。此外,我想为输入字段中的用户禁用或静音 "TAB",以便他们无法使用 TAB。
我愿意用任何其他方式检查整个电子邮件格式吗?
您可以试试这个解决方案:
@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
::*********************************************************************************