我想让用户在运行脚本之前输入他们的电子邮件地址,我的做法如下:
: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 个字符(即,即使用户输入 dummy [email protected] ),但我不知道如何检查用户的情况可以直接输入 (@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
::*********************************************************************************
关于batch-file - 如何在批处理脚本中验证用户输入的电子邮件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39584098/