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

标签 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 个字符(即,即使用户输入 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/

相关文章:

linux - Bash:仅使用参数扩展查找和替换

使用 Nashorn 编写 Java 脚本 (JSR 223) 和预编译

batch-file - .bat 文件中嵌套的 %errorlevel% 的错误值

perl - 如何在 .pl 和 .bat 文件中暂停控制台窗口?

windows - 如何在 Windows 环境中找到当前用户?

linux - 比较 n 个文件(二进制)

java - 基于项目字段的Spring批量CompletionPolicy

go - 从 Go 中的 channel 读取多个元素

python - 将 nlp.pipe() 与带有 spaCy 的预分段和预标记化文本一起使用

SQLCMD 传入变量